1const MEM={}; 2 3// ---- live site: one page per section ---- 4let PAGE_FILE={};const FILE_PAGE={}; 5function kebab(s){return String(s).toLowerCase().replace(/®/g,'').replace(/[^a-z0-9]+/g,'-').replace(/^-|-$/g,'').split('-').slice(0,6).join('-')} 6function buildPages(){PAGE_FILE={home:'index.html',systems:'systems.html',products:'systems.html#catalogue',applications:'applications.html',projects:'projects.html',engineering:'resources.html',about:'about.html',partners:'partners.html',contact:'contact.html',media:'media.html',enquiry:'free-estimate.html',order:'order-and-pay.html',finder:'systems.html#find-system',privacy:'privacy-policy.html',terms:'terms-and-conditions.html',cookies:'cookie-policy.html',security:'security.html',accessibility:'accessibility.html',glossary:'glossary.html'}; 7 SYS.forEach(s=>PAGE_FILE[s.slug]=s.slug+'-'+kebab(s.name)+'.html');APPS.forEach(a=>PAGE_FILE[a.slug]=kebab(a.name)+'.html');SMART.forEach(m=>PAGE_FILE[m.slug]=kebab(m.name)+'.html');CASES.forEach(c=>PAGE_FILE['case-'+c.id]='case-'+c.id+'.html'); 8 Object.entries(PAGE_FILE).forEach(([k,v])=>{const f=v.split('#')[0];if(!(f in FILE_PAGE))FILE_PAGE[f]=k})} 9function currentFile(){return decodeURIComponent(location.pathname.split('/').pop()||'index.html')||'index.html'} 10function currentRoute(){const h=(location.hash||'').slice(1);if(h&&PAGE_FILE[h]&&FILE_PAGE[currentFile()]===undefined)return h;return FILE_PAGE[currentFile()]||FILE_PAGE[currentFile()+'.html']||'home'} 11function pageUrl(r){return PAGE_FILE[r]||'index.html'} 12function linkify(root){(root||document).querySelectorAll('a[href^="#"]').forEach(a=>{const r=a.getAttribute('href').slice(1);if(PAGE_FILE[r])a.setAttribute('href',pageUrl(r))})} 13function onHash(){const r=(location.hash||'').slice(1);if(PAGE_FILE[r]&&pageUrl(r).split('#')[0]!==currentFile())location.href=pageUrl(r)} 14function legacyHash(){const r=(location.hash||'').slice(1);if(PAGE_FILE[r]&&pageUrl(r).split('#')[0]!==currentFile()){location.replace(pageUrl(r));return true}return false} 15 16// ---- live site: every form reaches Zoho through the backend; nothing is lost if a post fails ---- 17const GM_BACKEND='/api/'; 18const GM_T0=Date.now(); // the server's human-pace check: posts carry the time since the page opened 19function outbox(){try{return JSON.parse(localStorage.getItem('gm_outbox')||'[]')}catch(e){return MEM.outbox||[]}} 20function saveOutbox(q){MEM.outbox=q;try{localStorage.setItem('gm_outbox',JSON.stringify(q.slice(-30)))}catch(e){}} 21// a lead that reached Zoho: one 'generate_lead' event for Analytics and Google Ads (no personal data in it), 22// and the SalesIQ visitor gets the name, email and phone the person has just given us 23function gmTrack(ep,body){if(!['estimate','download','partner'].includes(ep))return;try{if(window.gtag)gtag('event','generate_lead',{lead_type:ep,stage:(body&&body.stage)||1}); 24 const c=(body&&(body.contact||body))||{};const v=window.$zoho&&$zoho.salesiq&&$zoho.salesiq.visitor; 25 if(v){const n=c.fullName||c.name,e=c.email,t=c.mobile||c.phone;if(n&&v.name)v.name(n);if(e&&v.email)v.email(e);if(t&&v.contactnumber)v.contactnumber(t)}}catch(e){}} 26function postNow(ep,body){return fetch(GM_BACKEND+ep,{method:'POST',headers:{'Content-Type':'text/plain;charset=UTF-8'},body:JSON.stringify(body),keepalive:true}) 27 .then(r=>r.json().catch(()=>({ok:r.ok})).then(j=>{if(r.status<300&&j&&j.ok!==false)gmTrack(ep,body);return {status:r.status,j}}))} 28function postLead(ep,body){if(body&&body.el==null)body.el=Date.now()-GM_T0;postNow(ep,body).then(({status,j})=>{if(status>=500||!j||(j.ok===false&&status!==400&&status!==403)){const q=outbox();q.push({ep,body,at:Date.now()});saveOutbox(q)}}).catch(()=>{const q=outbox();q.push({ep,body,at:Date.now()});saveOutbox(q)})} 29function flushOutbox(){const q=outbox();if(!q.length)return;saveOutbox([]);q.forEach(x=>{if(x.body&&x.body.el==null)x.body.el=60000;postLead(x.ep,x.body)})} // queued before the timer existed: sent by a person 30function answersFrom(L){const W=WHAT.find(w=>w[0]===L.what)||WHAT[7];return {finish:L.fin||W[3].finish,veh:L.veh||W[3].veh,area:+L.area||1000,soil:L.soil||'5',rain:L.rain||'mod',terrain:L.terrain||(W[0]==='road'?'road':'flat'),perm:L.perm||(W[3].finish==='stone'?'yes':'no')}} 31function estimateBody(stage){const L=lead();const W=WHAT.find(w=>w[0]===L.what)||WHAT[7]; 32 const b={ref:L.ref,stage,source:L.source||'Free estimate page',contact:{fullName:L.name||'',company:L.company||'',email:L.email||'',mobile:L.phone||''}, 33 project:{what:W[1],area_sqm:L.area||'',timeline:L.timeline||'',site:L.loc||'',city:L.city||'',state:L.state||'',country:L.country||'',roadCategory:W[3].roadCategory},utm:(sessionStorage.getItem('gm_utm')||'')}; 34 const det=stage===3&&L.detail?L.detail:'';if(det)b.detail=det; // a detailed enquiry sends no first cut 35 if(stage>=2&&!det)b.answers=answersFrom(L);if(stage>=3&&L.brief)b.brief=L.brief;return b} 36function sendEstimate(stage){const L=lead();if(!L.ref||!L.name)return;postLead('estimate',estimateBody(stage))} 37try{if(location.search&&/utm_/.test(location.search))sessionStorage.setItem('gm_utm',location.search.slice(1))}catch(e){} 38const SYS=[ 39 {code:'S1',slug:'s1',choose:['Trucks every day, up to 49 t gross (OC-HD 40; OC-LW 40 for lighter traffic)','A hard, dust-free grey surface','Light traffic in 3 days and trucks in 7','No saw-cut joints to cut, seal or crack'],avoid:['The surface must be fully permeable: choose S2','The contract requires asphalt (S5) or a concrete finish (S4)'],seq:[['img/s1_crew.webp','Grid laid on the compacted base and filled with cement-treated chips'],['img/s1_filled.webp','Compacted and brushed flush with the cell tops'],['img/rinac_yard_hd.webp','Finished truck yard, moist-cured 3 days (RINAC, Mumbai, on OC-LW 40)']],name:'Cement-treated gravel',tag:'Lead system',hex:'img/hex_ctg.webp',hero:'img/ctg_render.webp',heroCap:'Illustrative render: cement-treated chips brushed flush with the cell tops of OC-HD 40',line:'Light traffic in three days, trucks in seven, and no saw-cut joints', 40 what:'The 40 mm GridMats® grid (OC-HD 40 for trucks, OC-LW 40 for lighter traffic), laid on a compacted base and filled with crushed 6â12 mm chips treated with 4â6% cement, plate-compacted and brushed flush. Kerb or edge restraint on both sides; U-nails one per 2â3 m² on roads and slopes, one per 10 m² on flat yards, extra on embankments, edges and cut lines.', 41 wins:[['Built for trucks up to 49 t gross.','The empty OC-HD 40 panel carried 170 t/m² in the latest lab compression test; the pavement itself is designed from your traffic and soil.'],['No saw-cut joints, no dowels.','The cells arrest shrinkage cracks, so there is no joint cutting or sealing crew.'],['Light traffic in three days, not four weeks.','Moist-cured 3 days; light vehicles at 3 days, trucks at 7 once the 7-day cubes reach 2 MPa. Built bay by bay in shutdown windows.'],['Dust-free, repairable.','A hard grey surface that reads as concrete; damaged cells are refilled, not cut out.'],['Designed to the terrain and the rain.','Cross-section by topography, drainage by rainfall intensity: plain or steep sites.'],['ESG line item.','Per 1,000 m²: 6.6 t of plastic waste reused, and cement only in the 40 mm layer, at 4â6%. The handover file reports the numbers for your site.']], 42 where:'Plant and factory roads · truck parking and marshalling yards · solar and wind park internal roads · fire lanes · container yards · township service roads.', 43 xs:'img/xs_s1.webp',gallery:[['img/rinac_laying_b.webp','RINAC, Mumbai: OC-LW 40 across the truck yard, before the cement-treated gravel'],['img/s1_filled.webp','Cement-treated chips filled and brushed flush'],['img/s1_roller.webp','Roller compaction before the three-day cure'],['img/s1_crew.webp','Crew filling the cells: 300â400 m² a day'],['img/s1_macro.webp','The brushed surface up close'],['img/panel_hd.webp','Two OC-HD 40 panels: the hexagonal cells above, the perforated base below']], 44 ds:[['Product','OC-HD 40 for trucks (459 à 558 à 40 mm, 1.7 kg per panel) · OC-LW 40 for lighter traffic (500 à 500 à 40 mm) · 100% recycled PP'],['Test data','Lab compression tests on the panel: 170 t/m² empty (latest test report); filled, about 320 t/m² with cold asphalt and 3,200â4,000 t/m² with M25 concrete at 5 days (Stedrant, 2021) · mix designed for a 7-day UCS of 2â3 MPa'],['Application time','300â400 m² of grid per crew-day · light traffic 3 days · trucks 7 days, once the 7-day cubes reach 2 MPa · supply date confirmed with the PO'],['Product cost','â¹900â1,150 / m² OC-HD 40 by order size, ex-works · ex-GST · ex-freight'],['Installed range','â¹1,400â1,900 / m² indicative*'],['Reference','RINAC, Mumbai: cold-storage truck yard on OC-LW 40 with 6% cement, 2025, in daily use']], 45 flier:'files/s1_cement_treated_gravel_A4.pdf',install:'files/install_s1_cement_treated_gravel.pdf',stats:[['3 days','to light traffic; trucks at 7, once the cubes pass'],['0','saw-cut joints or dowels'],['170 t/m²','lab compression test, empty OC-HD 40 panel (latest test report)'],['4.0â6.6 kg/m²','recycled plastic reused (OC-LW to OC-HD)']]}, 46 {code:'S2',slug:'s2',choose:['Car parks, access and service roads','Rain should go into the ground rather than
46into surface drains','Opening to traffic the same day','A natural stone finish'],avoid:['Grades steeper than 6%, where loose chips can migrate: choose S1','Special plant over 49 t or tight turning under heavy loads: choose S1','A sealed surface that can be swept clean'],seq:[['img/lay_mats.webp','Grid laid and clipped on the compacted base'],['img/gravel_fill.webp','Clean angular chips filled into the cells'],['img/hero_kerbed.webp','Plate-compacted, kerbed and open the same day']],name:'Stone chip, gravel, pebble',tag:'Lead system · permeable',hex:'img/hex_stone_chips.webp',hero:'img/s2_chips_macro.webp',heroCap:'Stone chips locked in OC-HD 40 cells',line:'Car parks and access roads that open the same day and let the rain through', 47 what:'OC-HD (trucks) or OC-LW (cars) 40 mm grid on a compacted, open-graded base, filled with clean angular 8â12 mm chips and plate-compacted. Natural grey, black basalt, white marble or red laterite chips. Kerb or edge restraint; U-nails 1 per 2â3 m² on roads and slopes, 1 per 10 m² on flat yards.', 48 wins:[['Open the same day.','Nothing to cure; the crew leaves, the traffic arrives.'],['Rain goes through it.','Rainfall passes into an open-graded base and sub-surface drains sized to the siteâs rainfall; edge and outfall drains where the levels need them.'],['Designed to the terrain and the rain.','Cross-section by topography, drainage by rainfall intensity: plain or steep sites.'],['Chips stay in place.','Cell confinement controls migration and reduces rutting, on a base designed to the IRC:37 rutting criterion; repairs are a top-up.'],['ESG line item.','Per 1,000 m²: 6.6 t of plastic waste reused, no cement, about 870 m³ of rain a year returned to the ground at Bengaluru rainfall.']], 49 where:'Car parks and overflow parking · service roads · laydown yards · solar and wind sites · driveways and event grounds.', 50 xs:'img/xs_s2.webp',gallery:[['img/s2_chips_lw.webp','OC-LW 40 with stone chips for cars and walkways'],['img/finish_mix.webp','Finish to taste: white, black or laterite chips'],['img/laterite_fill.webp','Red laterite finish in OC-HD 40'],['img/hero_kerbed.webp','Kerbed access road with 8â12 mm stone-chip infill, opened the same afternoon'],['img/gcu_road.webp','Garden City University, Bengaluru: campus road on the 30 mm grid with gravel'],['img/reliance_road_hd.webp','Reliance Industries, Rann of Kutch: stone-chip access road on saline flat ground'],['img/hero_kutch.jpg','Access road across the Rann of Kutch'],['img/gravel_fill.webp','Chips filled and compacted flush'],['img/before_dirt.webp','Before: a dirt yard that ponded'],['img/after_gravel.webp','After: the same yard in stone chip']], 51 ds:[['Product','OC-HD 40 for trucks · OC-LW 40 for cars and walkways · the 30 mm grid (GP-30) for paths and campus roads · 100% recycled PP'],['Test data','Lab compression tests on the panel: OC-HD 40 170 t/m² empty (latest test report); OC-LW 40 105 / 200 t/m² empty / filled, in-house · infiltration tested at handover'],['Application time','300â400 m² of grid per crew-day · open the same day · supply date confirmed with the PO'],['Product cost','â¹900â1,150 / m² OC-HD · â¹550â690 / m² OC-LW by order size, ex-works · ex-GST · ex-freight'],['Installed range','â¹1,400â1,900 / m² recorded on completed sites, indicative*'],['References','Reliance, Rann of Kutch, 2025 · Toyo Engineering Bharuch · Laukik Nasik · SJ Contracts Pune · Garden City University']], 52 flier:'files/s2_permeable_stone_chip_A4.pdf',install:'files/install_s2_stone_chip.pdf',stats:[['Same day','open to traffic'],['Drains below','rain managed below the surface'],['â¹133â173/sq ft','recorded (â¹1,434â1,866/m²)'],['170 t/m²','lab test, empty OC-HD 40 panel (latest test report)']]}, 53 {code:'S3',slug:'s3',choose:['Fire-lane access, overflow and visitor parking on a base we design','Walkways and lawns: GP-20 for feet, GP-30 where cars drive','A surface that stays green and lets rain into the ground'],avoid:['Daily truck traffic: choose S1 or S2','Vehicles needed before the grass has rooted (4â6 weeks)','No water for the grass in its first season'],seq:[['img/gp30_panel.jpg','GP-30 pavers laid on sand bedding'],['img/waters_pavers_hd.webp','Root zone filled; the grass starts to close over'],['img/waters_stage_hd.webp','Grass closed over: Waters India amphitheatre']],name:'Grass and soil',tag:'Lead system · green',hex:'img/hex_grass.webp',hero:'img/svamitva.webp',heroCap:'Svamitva Floresta, Bengaluru: grass-top GridMats road through a landscaped plot, in service since 2021',line:'Fire lanes, overflow parking and paths that stay green', 54 what:'Recycled-polypropylene grass paver, 30 mm for cars and fire-lane access on a base we design, 20 mm for walkways, on sand bedding and an open-graded base, filled with a sandy root-zone mix and seeded or turfed. Soil-filled OC-LW 40 where an earth path is wanted. Edge restraint all roun
54d; U-nails on slopes and at edges.', 55 wins:[['The roots stay uncrushed.','The paver holds the root zone and the base we design takes the load; green where a lawn would rut.'],['Supports green-cover rules','and permeable-area requirements, subject to local approvals; drains like a lawn.'],['Foot traffic at once,','vehicles once the grass is 60 mm and rooted (4â6 weeks).'],['Low upkeep.','Mow and water; no resurfacing, no repainting.'],['ESG line item.','Per 1,000 m²: 3 t of plastic waste reused, 1,000 m² of green cover kept, about 870 m³ of rain a year infiltrated.']], 56 where:'Fire lanes on a base we design · overflow and visitor parking · amphitheatres and event lawns · walkways and drain margins · resort drives.', 57 xs:'img/xs_s3.webp',gallery:[['img/gp30_panel.jpg','GP-30 grass paver, 30 mm: for cars and fire lanes'],['img/gp20_panel.jpg','GP-20 grass paver, 20 mm: for walkways and lawns'],['img/soil_lw.webp','Soil-filled OC-LW 40 up close'],['img/waters_courtyard_hd.webp','Waters India, Bengaluru: grass and paved squares either side of the walkway'],['img/waters_stage_hd.webp','Waters India: the event lawn in front of the stage'],['img/waters_pavers_hd.webp','Waters India: paved squares with grass in the joints'],['img/s3_soil_macro.webp','Red soil in the cells, ready for grass'],['img/soil_path.webp','Soil-filled OC-LW earth path'],['img/soil_laying.webp','Laying OC-LW for a soil finish']], 58 ds:[['Product','Grass paver 30 mm (cars, fire-lane access) and 20 mm (walkways) · 250 à 250 mm · soil-filled OC-LW 40 for earth paths'],['Test data','Grass paver: third-party load test pending · soil-filled OC-LW 40: 105 / 200 t/m² empty / filled, in-house lab tests'],['Application time','300â400 m² per crew-day · foot traffic at once · vehicles after 4â6 weeks'],['Product cost','â¹430â495 / m² grass paver 30 mm · â¹550â690 / m² OC-LW 40 by order size, ex-works · ex-GST · ex-freight'],['Installed range','â¹1,350â1,800 / m² indicative; recorded â¹1,350â1,687*'],['References','Svamitva Floresta · Aishwaryam · Maruti · Garden City University · Waters India']], 59 flier:'files/s3_grass_paver_A4.pdf',install:'files/install_s3_grass_and_soil.pdf',stats:[['30 / 20 mm','vehicle / walkway pavers'],['Green','where a fire lane would be paved'],['â¹125â157/sq ft','recorded (â¹1,350â1,687/m²)'],['100%','recycled polypropylene']]}, 60 {code:'S4',slug:'s4',choose:['The client or consultant requires a concrete finish','A visible hexagon concrete surface is wanted','Areas where the specification calls for concrete'],avoid:['Lowest cost or permeability is the priority: S1 or S2 usually costs less','Full load is needed before 28 days'],name:'Honeycomb-finish concrete',tag:'On request · built by teams we train',hex:'img/hex_honey.webp',hero:'img/pgp_hex_hd.webp',heroCap:'Honeycomb finish: concrete flush with the cell tops',line:'The visible-hexagon concrete road, built flush by teams we train', 61 what:'OC-HD 40 wet-set into a lean-concrete bed or laid on plastic, filled with a flowable M30âM40 blend on 10 mm aggregate and finished flush; the cell tops are the finish. No overlay, no grinding. U-nails anchor the grid to the base at the SOP spacing; the cell walls act as the joints, with expansion joints only at bay edges and structures; steel is kept to the minimum the site condition calls for.', 62 wins:[['Concrete stops at the top of the cell.','No overlay, no groove cutting, no grinding: the hexagon pattern is the finish.'],['Built by teams we train.','We train your contractorâs execution team and give our SOP and installation guide: for orders of 2,000 m² or more, our trainer comes on site for up to 3 days, once you confirm in writing that the site is ready and your execution team is available, and demonstrates about 100 m² of installation to the project agreement and the SOP; smaller orders are trained online at no extra cost. Mix design approved, slump per truck, finish height checked at the cell top, curing compound photographed.'],['The only concrete we sell.','Offered on request where a client wants a concrete look and accepts the method. We never put the grid under a slab.'],['Faster than a
62jointed slab.','Light traffic 24 h, 40% load at 7 days, full load at 28 days.']], 63 where:'Plant roads · township and campus roads · premium parking · airport service corridors.', 64 xs:null,gallery:[['img/godrej_night.webp','Godrej, Vikhroli, Mumbai: finishing the concrete at night, 2026'],['img/pgp_apron_hd.webp','PGP Glass, Gujarat: honeycomb-finish apron at the loading bays'],['img/gmr_after.webp','GMR Hyderabad Airport: service corridor in honeycomb-finish concrete'],['img/nesta_pour.webp','Nest Ira, Devanahalli: concrete finished flush with the cell tops, 2023'],['img/nesta_finished.webp','Nest Ira, Devanahalli: the finished township road'],['img/pgp_truck.webp','PGP Glass: trucks on the honeycomb road'],['img/hd_grid_macro.webp','OC-HD 40 up close, before the concrete'],['img/prestige_pour.webp','Prestige Tranquility: concrete placed in the grid over a broken asphalt road, 2021'],['img/ajmera.webp','Ajmera: internal road'],['img/birla_guindy_night.webp','Aditya Birla: National Park, Guindy, Chennai, at night'],['img/ecoworld.webp','RMZ Ecoworld, Bengaluru']], 65 ds:[['Product','OC-HD 40 + M30âM40 blend on 10 mm aggregate; slump set by the concrete type, PQC or SCC'],['Test data','Lab compression test on the panel filled with M25 concrete: 3,200â4,000 t/m² at 5 days (Stedrant, 2021) · cubes at 7 and 28 days on every pour · LCA: 23.8 kg COâe per m² against 92.1 kg for a conventional concrete road (Smarter Dharma)'],['Application time','24 h light traffic · 40% load at 7 days · full load at 28 days · 25â30% faster than a jointed slab'],['Product cost','â¹900â1,150 / m² OC-HD 40 by order size, ex-works · ex-GST · ex-freight; concrete by the client'],['Installed range','â¹2,300â2,850 / m² materials (our cost sheets) against â¹2,900â3,200 / m² for an IRC:58 road*; under daily heavy trucks S1 usually costs less'],['References','17 sites since 2019: PGP Glass · Aditya Birla · Tata Advanced · Nest Ira · Brigade · Prestige · GMR · Godrej · Gulbarga Gated Layout']], 66 flier:'files/s4_honeycomb_concrete_A4.pdf',install:'files/install_s4_honeycomb_concrete.pdf',stats:[['3,200â4,000','t/m², lab test on the panel filled with M25 concrete, 5-day cure (Stedrant)'],['24 h · 7 d · 28 d','light · 40% · full load'],['17 sites','since 2019'],['0','overlay, grinding, groove cutting']]}, 67 {code:'S5',slug:'s5',choose:['The client or consultant keeps asphalt','A thinner base, or a weak subgrade (tested at subgrade CBR 5â10%)','The same asphalt contractor builds it'],avoid:['Asphalt is not required: S1 or S2 usually costs less','Subgrade CBR outside 5â10% without engineering verification'],name:'Grid at the GSB/WMM interface, asphalt on top',tag:'Keep your asphalt',hex:'img/hex_asphalt.webp',hero:'img/xs_s5.webp',heroCap:'OC-LW 40 laid at the GSB/WMM interface and filled with the same aggregate; WMM, DBM and BC above it exactly as MoRTH specifies',line:'Keep your asphalt. Put the grid in the base and build thinner.', 68 what:'OC-LW 40 (OC-HD 40 for the heaviest traffic) laid at the GSB/WMM interface, aggregate-filled, with at least 100 mm of compacted WMM above it. The bituminous layers follow MoRTH and the client\'s specification: bituminous concrete, SMA, mastic asphalt, cold mix or a RAP mix. Nothing changes above the grid.', 69 wins:[['The base gets twice as stiff.','Modulus improvement factor 2.00 on a CBR 5% subgrade, 1.63 on CBR 10%, from large-scale tests at IIT Hyderabad.'],['So the layers get thinner.','In the IIT Hyderabad design examples, checked in IITPAVE to IRC:37: 14% thinner overall at 3.5 MSA, with 22â24% less bituminous and 11% less granular; 80 mm thinner at 50 MSA on CBR 5%.'],['Nothing changes above the grid.','Your contractor\'s asphalt scope, plant and crew stay the same; the grid adds one shift per 1,000 m².'],['Weak subgrades.','Where the granular base would otherwise be thick, the grid does the work of the extra aggregate.']], 70 where:'Campus, township and approach roads · parking · plant peripheral roads · weak subgrades where the base would otherwise be thick.', 71 xs:'img/xs_s5.webp',gallery:[['img/orxa_edge_hd.webp','Orxa Energies, Bengaluru: the road edge, with the grid in the base under the asphalt'],['img/orxa_road_hd.webp','Orxa Energies: the campus road two years on, in 2024'],['img/iith_tank.webp','IIT Hyderabad: GridMats panels in the large-scale pavement test tank'],['img/iith_beam.webp','Asphalt beams with a GridMats interlayer, fatigue testing'],['img/lay_mats.webp','Laying the grid in the granular base']], 72 ds:[['Product','OC-LW 40 · OC-HD 40 for the heaviest traffic · 100% recycled PP'],['Test data','MIF 2.00 at CBR 5%, 1.63 at CBR 10%: IIT Hyderabad large-scale tank tests, October 2025 · presented at TGS2026, IISc Bengaluru, for publication by Springer'],['Application time','Contractor\'s schedule; grid adds one shift per 1,000 m²; asphalt opens as it always does'],['Product cost','â¹550â690 / m² OC-LW 40 · â¹900â1,150 / m² OC-HD 40 by order size, ex-works · ex-GST · ex-freight'],['Installed range','Design-specific; â¹2,700 / m² materials in a 10,000 m² example; 14% below the conventional section*'],['Reference','Orxa Energies, Bengaluru campus road · IIT Hyderabad test sections']], 73 flier:'files/s5_grid_under_asphalt_A4.pdf',install:'files/install_s5_grid_under_asphalt.pdf',stats:[['2.0Ã','base modulus, CBR 5%'],['22â24%','less bituminous thickness at 3.5 MSA (IIT Hyderabad example)'],['14%','thinner pavement overall at 3.5 MSA'],['1 shift','per 1,000 m² added']]}, 74 {code:'S6',slug:'s6',choose:['Temporary access, crane pads, laydown and events','The surface must be lifted and reused on the next site','No permanent construction is allowed'],avoid:['A permanent road or yard: choose S1 or S2','Soft ground that has not been levelled and compacted'],name:'Temporary roads and surfaces',tag:'Reusable · top-covered mats',hex:'img/hex_tc.webp',hero:'img/tc_colour_hd.webp',heroCap:'Top-covered GridMats mats locked together into a closed, reusable surface',line:'Temporary roads and surfaces that go down in a day and lift for the next site', 75 what:'Top-covered GridMats mats, 1000 à 500 à 50 mm and about 6.5 kg each, lock together into a closed, flat surface laid straight on levelled ground, over a geotextile where the ground is soft. No infill, no curing and no concrete: the crew lays them, the traffic uses them, and they are lifted and reused on the next site. Two grades: TC Heavy Duty, in black, yellow or red, for site roads, crane access and laydown; TC Light Weight, in black, for events, footfall and light vehicles.',
76 wins:[['Laid and lifted in a day.','No excavation, no base course and no concrete pad to break out afterwards.'],['Reusable.','The same mats move from job to job, so their cost is spread over many deployments.'],['The ground is handed back clean.','The mat spreads the wheel load, so soft ground and lawns are not rutted and nothing is left behind.'],['Priced like a product, not a project.','Buy the mats once, in colours that mark lanes, pads and walkways.']], 77 where:'Construction and EPC site access · crane pads and hardstands on wind and solar sites · laydown and storage areas · event grounds and temporary parking · utility, pipeline and emergency access.', 78 xs:'',gallery:[['img/tc_track.webp','A temporary track of top-covered mats over soft red soil'],['img/ge_truck.webp','GE wind site: a loaded truck on the yellow mats'],['img/coffee_laying_hd.webp','Coffee estate road, Chikkamagaluru: a removable road down the slope'],['img/tc_mats_laid.webp','Interlocking edges lock each mat to the next'],['img/tc_mats_close.webp','The top-covered surface in red, yellow and black'],['img/crane_tc.webp','Top-covered mats under a crane at a wind site']], 79 ds:[['Product','TC Heavy Duty and TC Light Weight · 1000 à 500 à 50 mm · about 6.5 kg per mat · interlocking, top-covered'],['Test data','Crane-pad trial at a GE wind site'],['Application time','Laid and lifted in a day; no curing'],['Product cost','â¹1,950â2,200 / m² by order size, ex-works · ex-GST · ex-freight'],['Installed range','Ground levelling only; no base, infill or concrete; mats reused'],['Reference','GE wind site: crane pad and access']], 80 flier:'files/s6_temporary_roads_A4.pdf',install:'files/install_s6_temporary_roads.pdf',stats:[['1 day','to lay or to lift'],['0','concrete, infill or curing'],['6.5 kg','per 1000 à 500 mm mat'],['Reusable','site after site']]} 81]; 82const APPS=[ 83 {slug:'app-solar',name:'Solar and wind parks',img:'img/solar_render.webp',cap:'Illustrative render: cement-treated gravel internal road between array rows',sys:'S1 · S2 · S6',line:'8â12 km of road per 100 MW, built without curing on the critical path', 84 supply:['S1 cement-treated gravel for main internal roads, inverter and transformer yards: vehicles up to 49 t gross, no saw-cut joints; trucks at 7 days once the cubes reach 2 MPa.','S2 permeable stone chip for O&M tracks, laydown and substation yards: open the same day, rain goes through.','S6 top-covered mats for crane pads and temporary access that move with the crew.','One method statement for every contractor: base by load class, edge restraint, U-nails at the SOP spacing, hold-point QC.'], 85 why:['Speed: a crew of four lays 300â400 m² of grid a day; the road is in use the same week.','Weak ground: confinement doubles the effective base stiffness on CBR 5 subgrades (IIT Hyderabad), so the granular layer is thinner and the borrow-pit smaller.','Priced per km: one rate for the park, one method statement for every contractor.','ESG line item: 6.6 t of plastic waste reused per 1,000 m², and rain returned to the ground on the permeable areas, reported per site.'], 86 ref:'Reliance Industries, Rann of Kutch: stone-chip access road on saline flat ground, 2025. Cement-treated gravel truck yard at RINAC, Mumbai (OC-LW 40), 2025.',flier:'files/solar_wind_parks_A4.pdf'}, 87 {slug:'app-plants',name:'Plants and truck yards',img:'img/rinac_laying_a.webp',cap:'RINAC, Mumbai: OC-LW 40 laid for a cement-treated gravel truck yard',sys:'S1 lead · S4 on request',line:'Truck yards that don\'t crack: three-day cure, local repairs, no shutdown', 88 supply:['S1 cement-treated gravel for yards, marshalling areas and plant roads: vehicles up to 49 t gross, with axle loads taken from your axle survey or VDF; no saw-cut joints, no steel; trucks at 7 days once the cubes reach 2 MPa; repairs cell by cell; built bay by bay in shutdown windows.','S4 honeycomb-finish concrete on request, where your standard insists on concrete: the visible-hexagon road on 17 sites since 2019, built by contractor teams we train, filled flush to the cell tops; never the grid under a slab.','One method statement, hold points signed.'], 89 why:['Concrete cracks at the joints; asphalt ruts under standing trucks. An S1 yard has no saw-cut joints, and cell confinement reduces rutting.','Repairs cell by cell: lift, refill, compact; no slab replacement, no shutdown.','Dust-free grey finish that reads as concrete and takes bay markings.','Lower cost on day one: recorded GridMats surfaces run â¹125â230 per sq ft (â¹1,350â2,474 per m²) against â¹269â297 per sq ft (â¹2,900â3,200 per m²) for an IRC:58 concrete road.'], 90 ref:'RINAC, Mumbai: cement-treated gravel truck yard on OC-LW 40, 2025. S4 honeycomb roads at PGP Glass, Aditya Birla (National Park, Guindy), Tata Advanced and Godrej since 2019.',flier:'files/plant_roads_yards_A4.pdf'}, 91 {slug:'app-logistics',name:'Logistics and industrial parks',img:'img/rinac_laying_b.webp',cap:'RINAC, Mumbai: OC-LW 40 across a cold-storage truck yard, before the cement-treated gravel',sys:'S1 · S2 · S3',line:'Truck aprons that neither crack nor rut, permeable car parks, green buffers', 92 supply:['S1 for truck aprons and marshalling.','S2 for car parks and service roads, permeable.','S3 for fire lanes and green buffers that stay green.'],why:['Bay by bay in operating parks.','N
92o storm-drain scope on the permeable areas; sub-surface drainage designed in.','One rate contract across a group\'s parks.'],ref:'Laukik Nasik, SJ Contracts Pune, Garden City University.',flier:'files/s1_cement_treated_gravel_A4.pdf'}, 93 {slug:'app-data',name:'Data centres and airports',img:'img/gmr_after.webp',cap:'GMR Hyderabad Airport: service corridor in honeycomb-finish concrete',sys:'S1 · S2 · S3',line:'Service roads, laydown and equipment yards, and the green buffer approvals require',supply:['S1 service roads and equipment yards.','S2 laydown and parking.','S3 green buffers and fire lanes.'],why:['Fast, dust-free, no curing on the critical path.','Permeable areas cut the storm-water scope.','ESG numbers per site for the disclosure.'],ref:'GMR Hyderabad Airport, service corridor and parking, 2023.',flier:'files/s2_permeable_stone_chip_A4.pdf'}, 94 {slug:'app-ports',name:'Ports and CFS',img:'img/pgp_truck.webp',cap:'Trucks on a GridMats plant road',sys:'S1 · S2',line:'Container yards where conventional surfaces fail under standing loads',supply:['S1 for empty-container yards and truck marshalling.','S2 for peripheral roads and parking.'],why:['No saw-cut joints to crack under standing loads.','Repairs cell by cell without closing the yard.'],ref:'Plant-yard references on request; RTG lanes stay conventional.',flier:'files/plant_roads_yards_A4.pdf'}, 95 {slug:'app-townships',name:'Townships and campuses',img:'img/nesta_finished.webp',cap:'Nest Ira, Devanahalli: township road in honeycomb-finish concrete',sys:'S2 · S3 · S5',line:'Green parking, fire lanes and campus roads that pass the approvals',supply:['S3 green parking and fire lanes.','S2 permeable service roads and driveways.','S5 grid in the base under the campus asphalt.'],why:['Supports green-cover rules, subject to local approval.','Rain managed below the surface on the permeable areas.','Thinner asphalt sections with the same contractor.'],ref:'Nest Ira, Brigade, Prestige, Svamitva Floresta, Orxa Energies.',flier:'files/s3_grass_paver_A4.pdf'}, 96 {slug:'app-hotels',name:'Hotels and estates',img:'img/waters_courtyard_hd.webp',cap:'Waters India, Bengaluru: courtyard lawn and paved squares',sys:'S2 · S3',line:'Drives, event lawns and overflow parking that look right',supply:['S2 in natural, black, white or laterite chips.','S3 grass pavers for lawns that carry cars.'],why:['Finish to taste.','Rain goes through.','Same-day opening for events.'],ref:'Waters India, Garden City University.',flier:'files/s2_permeable_stone_chip_A4.pdf'}, 97 {slug:'app-epc',name:'EPC and temporary works',img:'img/tc_track.webp',cap:'Top-covered mats (S6): a reusable temporary track over soft ground',sys:'S6 · S2',line:'Crane pads and temporary access that move with the crew',supply:['S6 top-covered mats for temporary roads, crane pads and laydown, reusable.','S2 for haul roads that stay after the job.'],why:['Laid and lifted in a day.','No concrete pads to break out.'],ref:'GE wind-site crane test.',flier:'files/s6_temporary_roads_A4.pdf'}, 98 {slug:'app-mining',name:'Mining and quarries',img:'img/s1_roller.webp',cap:'S1 cement-treated gravel under the roller: the haul-road system',sys:'S1 · S6 · S2',line:'Haul roads, loading areas and equipment zones that stay usable through the monsoon',supply:['S1 cement-treated gravel for haul roads, loading areas, weighbridge approaches and heavy-equipment zones.','S6 top-covered mats for temporary access and moving work faces: deploy, reinforce, remove, repeat.','S2 permeable stone chip for parking, storage yards and colony roads.'],why:['No concrete to cure on a remote site; S1 takes trucks at seven days, once the 7-day cubes reach 2 MPa.','Mats move with the work face and are reused.','The cells hold the base on slopes and embankments against erosion.'],ref:'S1 at RINAC, Mumbai (truck yard) and S6 crane pads on a GE wind site; mine roads are designed from the same load tables.',flier:'files/plant_roads_yards_A4.pdf'}, 99 {slug:'app-sports',name:'Sports, events and leisure',img:'img/waters_stage_hd.webp',cap:'Waters India, Bengaluru: amphitheatre and event lawn in grass pavers',sys:'S3 · S2 · S6',line:'Lawns, turf edges, paths and event grounds that take the crowd and stay green',supply:['S3 grass pavers for lawns, turf edges, golf-cart paths and overflow parking.','S2 stone chip for walkways, amphitheatre terraces and plazas.','S6 top-covered mats for event flooring, staging and vendor areas, laid and lifted for each event.'],why:['Grass stays green under traffic, with far less rutting and mud.','Rain drains through, so the ground is usable soon after a shower.','Event flooring goes down and comes up in a day.'],ref:'Waters India, Bengaluru: amphitheatre and event lawn in grass pavers, 2022.',flier:'files/s3_grass_paver_A4.pdf'}, 100 {slug:'app-parks',name:'Parks, forests and eco-tourism',img:'img/gcu_road.webp',cap:'Garden City University, Bengaluru: gravel road through scrub woodland on the 30 mm grid',sys:'S2 · S3 · S1 · S6',line:'Trails, forest roads and visitor parking that let rain into the ground and keep the landscape natural',supply:['S2 stone chip or gravel for nature trails, forest and estate roads, and visitor parking: local stone locked in the cells, firm underfoot and open to rain.','S3 grass and soil for overflow parking, ranger access and picnic lawns that stay green.','S1 cement-treated gravel on steep grades and at service yards, where loose chips would move.','S6 top-covered mats for temporary access to work sites and events, lifted afterwards.'],why:['Rain soaks in where it falls: no sealed surface and no runoff
100cutting into the slopes.','The cells hold the gravel in place, so trails keep their shape through the monsoon instead of rutting and washing out.','A natural finish in local stone or grass, with no concrete or asphalt in the landscape.','Opens the same day: nothing to cure. The grid is made from recycled plastic.'],ref:'Garden City University, Bengaluru (gravel road through woodland); coffee estate road, Chikkamagaluru (soft ground on a slope); gravel road in hilly, steep terrain near Nasik; access roads across the Rann of Kutch.',flier:'files/s2_permeable_stone_chip_A4.pdf'}, 101 {slug:'app-public',name:'Public infrastructure and smart cities',img:'img/ecoworld.webp',cap:'RMZ Ecoworld, Bengaluru: the road to the Outer Ring Road, built with recycled-plastic GridMats in 2022',sys:'S1 · S2 · S3 · Solar · IoT',line:'Footpaths, cycle lanes, plazas and parks that drain, last and report their own condition',supply:['S2 and S3 permeable footpaths, cycle lanes, plazas and parks.','S1 for bus depots, bus bays, service yards and parking.','GridMats Solar tiles for walkways and cycle lanes; GridMats IoT for load, wear and footfall data.'],why:['Permeable surfaces cut waterlogging and runoff.','No saw-cut joints to crack; cell confinement reduces rutting.','Live data for maintenance planning.'],ref:'Bengaluru road between Ecoworld and the Outer Ring Road, built with recycled-plastic GridMats in 2022 (The Hindu; Commercial Design).',flier:'files/s2_permeable_stone_chip_A4.pdf'} 102]; 103const SMART=[ 104 {slug:'solar',name:'GridMats Solar Walkway',tag:'Energy-generating walkways · pilot stage',line:'Walkways that carry people and produce electricity',img:'img/solar_walkway.webp',cap:'Concept visualization: a GridMats Solar Walkway through a campus', 105 what:'GridMats Solar Walkway turns walkways and paved areas that are already in use into clean-energy infrastructure. Walkable photovoltaic modules sit on 40 à 40 mm MLP lumber members, with about 50 mm open gaps for airflow and drainage and the wiring routed along the lumber, over the patented GridMats structural base in 100% recycled polypropylene. It is pre-commercial: pilot validation is under way and no commercial deployment is claimed yet.', 106 uses:[['Industrial campuses','Factories, warehouses and logistics parks.'],['Corporate and institutional campuses','Offices, universities and hospitals.'],['Mobility hubs','Airports, metro, rail and bus facilities.'],['EV charging','Walkways beside charging hubs and parking.'],['Smart cities','Public walkways, parks and civic spaces.'],['Data centres and utilities','Distributed generation that is also a visible ESG asset.']], 107 specs:[['Layers','Walkable PV module · MLP lumber electrical layer · patented GridMats base (patent 398992)'],['Design basis','40 W per 550 à 400 mm module; up to about 110 W/m² of walkway'],['Surface efficiency','15â16%, against about 18â19% for sloped rooftop panels, with no mounting structure and no extra land'],['Airflow and drainage','About 50 mm open gaps between the 40 à 40 mm MLP lumber members'],['Power use','Inverters feed lighting, sensors, charging, storage or grid-connected loads'],['Status','Pre-commercial; pilot validation under way']], 108 steps:['Site assessment: shading, footfall and loads, drainage and the electrical connection.','Engineering: the module, GridMats and MLP lumber layout, cabling, inverter or storage interface and safety details.','Pilot installation: a monitored field pilot that measures output (W/m², kWh a day), module temperature, drainage, walkability and uptime.','Scale-up: across the campus or portfolio, with lighting, sensors and batteries.'],stepsTitle:'How a pilot works', 109 gallery:[['img/solar_layers.webp','The three layers: PV module, MLP lumber with wiring and airflow gaps, GridMats base'],['img/solar_hub.webp','Concept visualization: a logistics hub walkway beside EV charging'],['img/solar_base.jpg','The GridMats base: 100% recycled polypropylene cells']], 110 flier:'files/solar_walkway_A4.pdf',price:'Priced per pilot and per site after the site assessment.',wa:'I would like to discu
110ss a GridMats Solar Walkway pilot'}, 111 {slug:'iot',name:'GridMats IoT',tag:'Sensors in the surface',line:'Floors and roads that report their own load, wear and weather',img:'img/iot_render.webp',cap:'Illustrative render: a GridMats sensor floor with a live dashboard', 112 what:'GridMats IoT embeds sensors in GridMats floors and roads and adds site sensors for the weather around them. A live dashboard shows loads, surface stress, footfall, temperature and moisture, and flags overloads and wear before they become failures. It comes out of GridMats research and development and is scoped project by project.', 113 uses:[['Warehouses and logistics hubs','Weight distribution under racks and forklift routes, overload alerts, and data for better storage layouts.'],['Roads, weighbridges and compounds','Vehicle loads, traffic trends and pavement wear; weighbridges, border posts and secure compounds.'],['Plazas, malls and campuses','Footfall counts and microclimate readings for planning and safety.'],['Living walls and public spaces','Temperature, humidity and air quality, as on the Cool Green Wall.']], 114 specs:[['Sensor options','Pressure and load cells, strain gauges, vibration, fibre-optic, moisture, temperature (thermocouples), footfall'],['Where they sit','Embedded in the GridMats surface, including the concrete-filled OC grid'],['Data','Live dashboard with alerts; readings for maintenance planning'],['Availability','Pilot projects; scope, sensor count and price per site']], 115 gallery:[['img/coolwall_2.webp','Live climate dashboard beside the Cool Green Wall, December 2025']], 116 price:'Scoped and priced per project.',wa:'I would like to know more about GridMats IoT sensors'}, 117 {slug:'coolwall',name:'Cool Green Wall',tag:'Living wall with smart cooling',line:'A living wall that cools the air around it and reports what it does',img:'img/coolwall_1.webp',cap:'Cool Green Wall at Conscious Collective, a Godrej Design Lab initiative, December 2025', 118 what:'The Cool Green Wall is a modular vertical garden with smart sensors and a responsive misting system. Sensors track temperature, humidity and air quality in real time; the misting cools the surrounding microclimate; layered planting improves air quality and supports biodiversity. It was shown at Conscious Collective, a Godrej Design Lab initiative, on 11â14 December 2025.', 119 uses:[['Facades and boundary walls','Greener, cooler frontages for offices, factories and campuses.'],['Campuses, malls and public spaces','Shade and cooler air where people gather.'],['Exhibitions and events','A living backdrop that shows its own climate data.'],['Urban heat','A modular answer to the heat-island effect, sized to the site.']], 120 specs:[['Build','Modular panels with layered planting'],['Cooling','Responsive misting system'],['Sensing','Temperature, humidity and air quality in real time, through GridMats IoT'],['Shown at','Conscious Collective, a Godrej Design Lab initiative, 11â14 December 2025']], 121 gallery:[['img/coolwall_2.webp','The wall with its live climate dashboard'],['img/coolwall_render.webp','Illustrative render: a Cool Green Wall facade with sensors and misting'],['img/coolwall_expo.webp','GridMats mats and grids at the same exhibition']], 122 price:'Designed and priced per wall.',wa:'I would like to know more about the Cool Green Wall'}, 123 {slug:'pallets',name:'Pallets and MLP boards',tag:'From multilayer plastic waste',line:'Pallets and plywood-substitute boards made from multilayer plastic waste',img:'img/pallets_hero.webp',cap:'A GridMats fabricated pallet in MLP members', 124 what:'MLP boards are heat-pressed from multilayered and single-use plastic waste, such as tetra packs, aluminium-lined film and chip packets, with no adhesive, no formaldehyde and no glue lines to delaminate. GridMats Pallets are fabricated from individually replaceable MLP members, so a damaged slat is replaced and the pallet stays in service; there is no timber, so no splinters, protruding nails or wood dust. The same boards already replace plywood in shuttering, site cabins, doors and scaffolding.', 125 uses:[['Pallets for export and logistics','Three footprints, 48 à 40, 59 à 44 and 78 à 65; members replaced one at a time.'],['Crates and packaging','Boards and lumber for crate panels and pallet assembly lines.'],['Construction','Shuttering (20+ reuses), site cabins, doors and scaffolding.'],['Traceable fleets','An optional QR, RFID or IoT identifier per pallet, linked to your WMS, TMS or ERP.']], 126 specs:[['Boards','6, 8, 12 and 16 mm; nominal 4 à 8 ft panel 16, 21, 32 and 43 kg'],['Density','0.9 g/cm³, about 28% above plywood'],['Strength','Compressive 18.7 MPa (ASTM D695); tensile 7.41 / 5.10 MPa across / along the grain (ASTM D638); modulus of rupture 9.17 / 8.39 MPa (IS:1734); shear 3.2 MPa (ASTM D143)'],['Water and pests','Moisture 0.17% (ASTM D7191); no bulge after a 24-hour soak; no shrinking or swelling; termite- and UV-resistant'],['Pallets','48 à 40, 59 à 44 and 78 à 65; 48, 66 and 120 kg; finite-element safety factor 15 under vertical load (simulation)'],['Pallet tests','Burning rate 0.16 mm/s (ASTM D635); heat 2 h at 205 °C (ASTM D2485); acid absorption 1.03%'],['Quality','ISO 9001, ISO 14001 and ISO 45001; three plants in India']], 127 steps:['Tell us the footprint, load and handling line, or the board format and thickness.','We send samples in the formats and thicknesses you nominate, with indicative costing.','Your lab establishes load, stacking, impact, humidity and fastener performance against your specification.','Supply by purchase order, with optional QR or RFID tracking.'],stepsTitle:'How to evaluate', 128 gallery:[['img/pallets_top.webp','Top view: slat layout and central support'],['img/pallets_side.webp','Side view: members and support blocks'],['img/pallet_48x40_r.jpg','48 à 40 pallet, 48 kg',1],['img/pallet_59x44_r.jpg','59 à 44 pallet, 66 kg',1],['img/pallet_78x65_r.jpg','78 à 65 pallet, 120 kg',1],['img/mlp_cabin.jpg','Site cabin in MLP boards'],['img/mlp_shuttering.jpg','MLP boards as shuttering on site'],['img/mlp_door.jpg','A door in MLP board']], 129 flier:'files/pallets_mlp_boards_A4.pdf',price:'Samples and indicative costing on request. The board figures are from Indian test houses; the pallet figures are simulation, so load, stacking and impact are for your lab to establish.',wa:'I would like samples of GridMats pallets or MLP boards'} 130]; 131const TEAM=[ 132 {name:'Dr Prathap B Rao',role:'Managing Director',note:'',img:'img/team_prathap.jpg',li:'https://in.linkedin.com/in/bprathaap'}, 133 {name:'Pavan Sampath',role:'USA Business Development',note:'Ex-Goldman Sachs · Michigan State University',
133img:'img/team_pavan.jpg'}, 134 {name:'Abhimanyu Kinha',role:'USA Strategy and Operations',note:'QC Engineer, Tesla',img:'img/team_abhimanyu.jpg'}, 135 {name:'Surya B',role:'Sales and Projects',note:'National-level sportsman · Lead accountant',img:'img/team_surya.jpg'}, 136 {name:'Dr Kalpana Sampath',role:'CPO',note:'Serial entrepreneur',img:'img/team_kalpana.jpg'}, 137 {name:'Poornima Prathap',role:'Controller',note:'Educator',img:'img/team_poornima.jpg'}, 138 {name:'Shravan Kumar',role:'Techie, R&D',note:'MTech Highways · PhD scholar',img:'img/team_shravan.jpg'} 139]; 140const OFFICES=[ 141 {city:'Bengaluru, India',what:'Head office and sales',mail:'[email protected]',phone:'+91 63626 GMATS (46287)',tel:'+916362646287',extra:'WhatsApp +91 63626 46287 · +91 81476 84653'}, 142 {city:'Los Angeles, USA',what:'Partnerships',mail:'[email protected]',phone:'+1 424 333 4047',tel:'+14243334047'}, 143 {city:'Kuala Lumpur, Malaysia',what:'Sales, Malaysia',mail:'[email protected]',phone:'+60 17 369 2203',tel:'+60173692203'}, 144 {city:'Cape Town, South Africa',what:'Sales, South Africa',mail:'[email protected]',phone:'',tel:''} 145]; 146const CASES=[ 147 {id:'rinac',title:'RINAC, Mumbai',sys:'S1',location:'Mumbai, Maharashtra',client:'RINAC India',industry:'Cold-chain logistics',use:'Cold-storage truck yard',saving:'â¹1,000â1,400/m² vs an IRC:58 concrete yard',year:'2025',img:'img/rinac_laying_b.webp',gallery:[['img/rinac_laying_c.webp','Panels going down one bay at a time'],['img/rinac_laying_a.webp','OC-LW 40 on the prepared base, before the cement-treated gravel'],['img/rinac_yard_hd.webp','The finished yard in daily use']],text:'Cold-storage truck yard rebuilt in cement-treated gravel (6% cement) in OC-LW 40 during a shutdown window; light traffic at three days, trucks at seven; in daily use under reefer trucks since. The reference site for S1.'}, 148 {id:'reliance',title:'Reliance Industries, Rann of Kutch',sys:'S2',location:'Rann of Kutch, Gujarat',client:'Reliance Industries',industry:'Petrochemicals and energy',use:'Access road on saline flats',saving:'â¹100â400/m² vs a bituminous road, plus no surface-drain scope on the permeable area',year:'2025',img:'img/reliance_road_hd.webp',gallery:[['img/reliance_geotextile.webp','Geotextile on the formation before the grid'],['img/reliance_road_hd.webp','The stone-chip road across the saline flats'],['img/reliance_site_hd.webp','The road at the site office']],text:'Access road on saline flat ground, OC-HD with 8â12 mm chips, designed for low CBR and checked in IITPAVE; opened to traffic the day it was filled.'}, 149 {id:'toyo',title:'Toyo Engineering, Bharuch',sys:'S2',location:'Bharuch, Gujarat',client:'Toyo Engineering',industry:'Engineering and construction',use:'Plant entrance road',saving:'â¹100â400/m² vs a bituminous road, plus no surface-drain scope on the permeable area',year:'2024',img:'img/hero_kerbed.webp',text:'Kerbed entrance road with stone-chip infill on M-sand bedding, opened the same afternoon.'}, 150 {id:'svamitva',title:'Svamitva Floresta, Bengaluru',sys:'S3',location:'Bengaluru, Karnataka',client:'Svamitva Floresta',industry:'Residential township',use:'Grass roads in a plotted layout',saving:'â¹100â400/m² vs paver blocks with drains, plus green-cover credit',year:'2021',img:'img/svamitva.webp',text:'Grass-top GridMats roads through a landscaped township plot, in service since 2021; the roots stay uncrushed under cars.'}, 151 {id:'waters',title:'Waters India, Bengaluru',sys:'S3',location:'Bengaluru, Karnataka',client:'Waters India',industry:'Life-science instruments campus',use:'Amphitheatre and event lawn',saving:'â¹300â600/m² vs concrete pavers',year:'2022',img:'img/waters_courtyard_hd.webp',gallery:[['img/waters_pavers_hd.webp','Paved squares with grass in the joints'],['img/waters_path_hd.webp','The lawn, the walkway and the squares'],['img/waters_stage_hd.webp','The event lawn in front of the stage']],text:'Amphitheatre and event lawn in grass pavers: foot traffic from day one, mowed like a lawn.'}, 152 {id:'pgp',title:'PGP Glass, Gujarat',sys:'S4',location:'Kosamba, Gujarat',client:'PGP Glass',industry:'Glass manufacturing',use:'Plant roads under 40-tonne trucks',saving:'â¹350â900/m² vs an IRC:58 concrete road (12â28%)',year:'2023',img:'img/pgp_apron_hd.webp',gallery:[['img/pgp_hex_hd.webp','The hexagon finish up close: the cell tops are the finish'],['img/pgp_truck.webp','Trucks on the honeycomb road']],text:'Honeycomb-finish plant road under 40-tonne trucks; the visible-hexagon finish that made the system known.'}, 153 {id:'gmr',title:'GMR Hyderabad Airport',sys:'S4',location:'Hyderabad, Telangana',client:'GMR Hyderabad International Airport',industry:'Airport',use:'Service corridor and parking',saving:'â¹350â900/m² vs a PQC parking slab',year:'2023',img:'img/gmr_after.webp',gallery:[['img/gmr_before.webp','Before: the broken paver corridor'],['img/gmr_base.webp','Pavers lifted and the base prepared'],['img/gmr_bed.webp','The lean-concrete levelling bed'],['img/gmr_grid.webp','OC-HD 40 laid down the corridor'],['img/gmr_after.webp','After: honeycomb-finish concrete in service']],text:'Service corridor and parking in honeycomb-finish concrete at an operating airport, built between flights.'}, 154 {id:'nesta',title:'Nest Ira, Devanahalli',sys:'S4',location:'Devanahalli, Karnataka',client:'Nest Ira',industry:'Residential township',use:'Township roads',saving:'â¹350â900/m² vs an IRC:58 concrete road;
154 no saw-cut joints to maintain',year:'2023',img:'img/nesta_finished.webp',gallery:[['img/nesta_base.webp','The prepared road bed'],['img/nesta_grid.webp','OC-HD 40 laid on the lean-concrete bed'],['img/nesta_pour.webp','Concrete placed and finished flush with the cell tops'],['img/nesta_finished.webp','The honeycomb finish, the next morning']],text:'Township roads built end to end in honeycomb-finish concrete through a wooded plot.'}, 155 {id:'godrej',title:'Godrej, Vikhroli, Mumbai',sys:'S4',location:'Vikhroli, Mumbai, Maharashtra',client:'Godrej',industry:'Industrial campus',use:'Honeycomb-finish campus road',saving:'â¹350â900/m² vs an IRC:58 concrete road (12â28%)',year:'2026',img:'img/godrej_night.webp',text:'A campus road at Vikhroli, Mumbai, in honeycomb-finish concrete: the road bed prepared, OC-HD 40 laid between the edge restraints, then filled with concrete and finished flush with the cell tops, bay by bay.',gallery:[['img/godrej_site.webp','The road bed being prepared'],['img/godrej_bed.webp','The separation layer and edge restraints, before the grid'],['img/godrej_fill.webp','OC-HD 40 filled bay by bay'],['img/godrej_night.webp','Finishing the concrete at night'],['img/godrej_finish.webp','The honeycomb finish in service']]}, 156 {id:'birla',title:'Aditya Birla, National Park Guindy, Chennai',sys:'S4',location:'Guindy, Chennai, Tamil Nadu',client:'Aditya Birla Group',industry:'Manufacturing',use:'Honeycomb-finish road, National Park, Guindy',saving:'â¹350â900/m² vs an IRC:58 concrete road (12â28%)',year:'',img:'img/birla_guindy_night.webp',text:'Honeycomb-finish road at National Park, Guindy, Chennai, photographed at night under the lights.'}, 157 {id:'prestige',title:'Prestige Tranquility, Bengaluru',sys:'S4',location:'Bengaluru, Karnataka',client:'Prestige Tranquil',industry:'Residential',use:'Road restoration',saving:'â¹350â900/m² vs an IRC:58 concrete road',year:'2021',img:'img/prestige_pour.webp',text:'A broken asphalt road restored with a concrete hexagon finish: GridMats laid over the old asphalt and filled flush with concrete, with no digging out of the old road.'}, 158 {id:'orxa',title:'Orxa Energies, Bengaluru',sys:'S5',location:'Bengaluru, Karnataka',client:'Orxa Energies',industry:'Electric mobility',use:'Campus road under asphalt',saving:'Up to â¹250/m² at parity rates, 14% less material',year:'2022',img:'img/orxa_parking_hd.webp',gallery:[['img/orxa_road_hd.webp','The campus road, photographed in 2024'],['img/orxa_edge_hd.webp','The road edge: the grid in the base, under the asphalt'],['img/orxa_parking_hd.webp','The road and parking from above']],text:'Campus road and parking with OC-HD 40 at the WMM/GSB interface as a rut-resistance layer under the asphalt, built by the client\'s contractor on its normal schedule.'}, 159 {id:'ge',title:'GE wind site',sys:'S6',location:'Wind site',client:'GE',industry:'Wind energy',use:'Crane pad and access',saving:'Concrete or WBM pad avoided; mats reused',year:'',img:'img/crane_tc.webp',gallery:[['img/ge_crane_hd.webp','The crane standing on GridMats pads'],['img/ge_mats_hd.webp','Top-covered mats as the crane access pad'],['img/ge_truck.webp','A loaded truck on the yellow mats']],text:'Top-covered mats under a crane on a wind site: laid and lifted in a day.'}, 160 {id:'coffee',title:'Coffee estate road, Chikkamagaluru',sys:'S6',location:'Chikkamagaluru, Karnataka',client:'Organic coffee estate (name withheld)',industry:'Agriculture',use:'Removable harvest road',saving:'Dirt track made usable through the monsoon; panels reused',year:'',img:'img/coffee_laying_hd.webp',gallery:[['img/coffee_geotextile.webp','Geotextile over the soft ground'],['img/coffee_laying_hd.webp','Panels laid down the slope'],['img/coffee_crew.webp','The estate crew laying the last bays'],['img/coffee_finished.webp','Two weeks later']],text:'A removable GridMats road for tractors, trucks and workers through the monsoon, laid over soft, uneven ground without cutting into the estate, then lifted and reused for the next harvest.'} 161]; 162const REFS=[{"code": "P035", "project": "Cold-storage truck yard", "location": "Mumbai, Maharashtra", "client": "RINAC India", "industry": "Cold-chain logistics", "use": "Truck yard for reefer trucks on OC-LW 40 with 6% cement-treated gravel, built in a shutdown window", "sys": "S1", "saving": "â¹1,000â1,400/m² vs an IRC:58 concrete yard", "vs": "PQC concrete", "year": "2025"}
162, {"code": "P034", "project": "Access road on saline flats", "location": "Rann of Kutch, Gujarat", "client": "Reliance Industries", "industry": "Petrochemicals and energy", "use": "Access road on saline, low-CBR ground; opened the same day", "sys": "S2", "saving": "â¹100â400/m² vs a bituminous road, plus no surface-drain scope on the permeable area", "vs": "bituminous road", "year": "2025"}, {"code": "P036", "project": "Plant entrance road", "location": "Bharuch, Gujarat", "client": "Toyo Engineering", "industry": "Engineering and construction", "use": "Kerbed entrance road with stone-chip infill", "sys": "S2", "saving": "â¹100â400/m² vs a bituminous road, plus no surface-drain scope on the permeable area", "vs": "bituminous road", "year": "2024"}, {"code": "P031", "project": "Campus road, paths and parking", "location": "Bengaluru, Karnataka", "client": "Garden City University", "industry": "Education campus", "use": "30 mm grid (GP-30) with gravel for the campus road, paths and parking", "sys": "S2", "saving": "â¹100â300/m² vs paver blocks, plus the storm-drain scope avoided", "vs": "paver blocks + drains", "year": ""}, {"code": "P0xx", "project": "Gravel road in hilly, steep terrain", "location": "Nasik, Maharashtra", "client": "Laukik Tated", "industry": "Industrial contractor", "use": "Gravel road on steep, hilly ground with heavy rain in the monsoon", "sys": "S2", "saving": "â¹100â400/m² vs a bituminous road, plus no surface-drain scope on the permeable area", "vs": "bituminous road", "year": ""}, {"code": "P0xx", "project": "Temporary site access", "location": "Pune, Maharashtra", "client": "SJ Contracts", "industry": "Construction contractor", "use": "Temporary access road that stays after the job", "sys": "S2", "saving": "Concrete or WBM pad avoided; mats reused", "vs": "concrete pad", "year": ""}, {"code": "P014", "project": "Grass roads in a plotted layout", "location": "Bengaluru, Karnataka", "client": "Svamitva Floresta", "industry": "Residential township", "use": "Grass-top roads and paths through a landscaped plot", "sys": "S3", "saving": "â¹100â400/m² vs paver blocks with drains, plus green-cover credit", "vs": "paver blocks + drains", "year": "2021"}, {"code": "P0xx", "project": "Soil-finish paths", "location": "â", "client": "Punarnava", "industry": "Residential", "use": "Soil-filled OC-LW earth paths", "sys": "S3", "saving": "â¹100â400/m² vs paver blocks with drains, plus green-cover credit", "vs": "paver blocks + drains", "year": ""}, {"code": "P0xx", "project": "Green parking and paths", "location": "â", "client": "Aishwaryam", "industry": "Residential", "use": "Grass and soil surfaces for parking and paths", "sys": "S3", "saving": "â¹100â400/m² vs paver blocks with drains, plus green-cover credit", "vs": "paver blocks + drains", "year": ""}, {"code": "P0xx", "project": "Green parking", "location": "â", "client": "Maruti", "industry": "Automotive", "use": "Grass-paver parking", "sys": "S3", "saving": "â¹100â400/m² vs paver blocks with drains, plus green-cover credit", "vs": "paver blocks + drains", "year": ""}, {"code": "P0xx", "project": "Amphitheatre and event lawn", "location": "Bengaluru, Karnataka", "client": "Waters India", "industry": "Life-science instruments campus", "use": "Grass pavers and honeycomb concrete for an amphitheatre and paths", "sys": "S3", "saving": "â¹300â600/m² vs concrete pavers", "vs": "concrete pavers", "year": "2022"}, {"code": "P0xx", "project": "Plant roads", "location": "Kosamba, Gujarat", "client": "PGP Glass", "industry": "Glass manufacturing", "use": "Honeycomb-finish plant roads under 40-tonne trucks", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road (12â28%)", "vs": "PQC concrete", "year": "2023"}, {"code": "P0xx", "project": "Plant roads", "location": "Jambusar, Gujarat", "client": "PGP Glass", "industry": "Glass manufacturing", "use": "Honeycomb-finish plant roads, second site", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road (12â28%)", "vs": "PQC concrete", "year": ""}, {"code": "P0xx", "project": "National Park, Guindy", "location": "Chennai, Tamil Nadu", "client": "Aditya Birla Group", "industry": "Manufacturing", "use": "Honeycomb-finish road", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road (12â28%)", "vs": "PQC concrete", "year": ""}, {"code": "P0xx", "project": "Plant road", "location": "â", "client": "Tata Advanced Systems", "industry": "Aerospace and defence manufacturing", "use": "Honeycomb-finish plant road", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road (12â28%)", "vs": "PQC concrete", "year": ""}
162, {"code": "P0xx", "project": "Industrial campus road", "location": "Vikhroli, Mumbai", "client": "Godrej", "industry": "Industrial campus", "use": "Honeycomb-finish road", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road (12â28%)", "vs": "PQC concrete", "year": "2026"}, {"code": "P0xx", "project": "Plant road", "location": "â", "client": "International Tube", "industry": "Tube manufacturing", "use": "Honeycomb-finish plant road", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road (12â28%)", "vs": "PQC concrete", "year": ""}, {"code": "P0xx", "project": "Plant road", "location": "â", "client": "Prakash Technoplast", "industry": "Plastics manufacturing", "use": "Honeycomb-finish plant road", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road (12â28%)", "vs": "PQC concrete", "year": ""}, {"code": "P0xx", "project": "Service corridor and parking", "location": "Hyderabad, Telangana", "client": "GMR Hyderabad International Airport", "industry": "Airport", "use": "Honeycomb-finish service corridor and parking at an operating airport", "sys": "S4", "saving": "â¹350â900/m² vs a PQC parking slab", "vs": "PQC concrete", "year": "2023"}, {"code": "P0xx", "project": "Township roads", "location": "Devanahalli, Karnataka", "client": "Nest Ira", "industry": "Residential township", "use": "Honeycomb-finish roads through a wooded plot, built end to end", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road; no saw-cut joints to maintain", "vs": "PQC concrete", "year": "2023"}, {"code": "P0xx", "project": "Township roads", "location": "Devanahalli, Karnataka", "client": "Brigade Orchards", "industry": "Residential township", "use": "Honeycomb-finish internal roads", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road; no saw-cut joints to maintain", "vs": "PQC concrete", "year": ""}, {"code": "P0xx", "project": "Road restoration", "location": "Bengaluru, Karnataka", "client": "Prestige Tranquil", "industry": "Residential", "use": "Concrete hexagon finish over a broken asphalt road", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road", "vs": "PQC concrete", "year": "2021"}, {"code": "P0xx", "project": "IT-park road", "location": "Bengaluru, Karnataka", "client": "RMZ Ecoworld (Arliga)", "industry": "IT park", "use": "Honeycomb-finish campus road", "sys": "S4", "saving": "â¹350â900/m² vs an IRC:58 concrete road; no saw-cut joints to maintain", "vs": "PQC concrete", "year": ""}, {"code": "P0xx", "project": "Campus road and parking", "location": "Bengaluru, Karnataka", "client": "Divyasree", "industry": "Real estate", "use": "Honeycomb-finish road and parking", "sys": "S4", "saving": "â¹350â900/m² vs a PQC parking slab", "vs": "PQC concrete", "year": ""}, {"code": "P0xx", "project": "Driveway and parking", "location": "â", "client": "Aqua Group", "industry": "Real estate", "use": "Honeycomb-finish driveway and parking", "sys": "S4", "saving": "â¹350â900/m² vs a PQC parking slab", "vs": "PQC concrete", "year": ""}, {"code": "P0xx", "project": "Dealership yard", "location": "Calicut, Kerala", "client": "Hyundai", "industry": "Automotive dealership", "use": "Honeycomb-finish vehicle yard", "sys": "S4", "saving": "â¹350â900/m² vs a PQC parking slab", "vs": "PQC concrete", "year": ""}, {"code": "P023", "project": "Gated-layout driveway and verges", "location": "Gulbarga (Kalaburagi), Karnataka", "client": "Gulbarga Gated Layout", "industry": "Residential layout", "use": "Honeycomb-finish concrete driveway with OC-LW gravel and soil verges on both sides", "sys": "S4 + S2/S3", "saving": "â¹350â900/m² on the driveway vs PQC; verges at â¹1,300â1,700 all-in", "vs": "PQC driveway + paved verges", "year": ""}, {"code": "P003", "project": "Campus road under asphalt", "location": "Bengaluru, Karnataka", "client": "Orxa Energies", "industry": "Electric mobility", "use": "OC-HD 40 at the WMM/GSB interface as a rut-resistance layer under the campus asphalt road", "sys": "S5", "saving": "Up to â¹250/m² at parity rates, 14% less material", "vs": "IRC:37 bituminous", "year": "2022"}, {"code": "P0xx", "project": "Crane pad and access", "location": "Wind site", "client": "GE", "industry": "Wind energy", "use": "Top-covered mats under a crane; laid and lifted in a day", "sys": "S6", "saving": "Concrete or WBM pad avoided; mats reused", "vs": "concrete pad", "year": ""}, {"code": "P0xx", "project": "Harvest access road", "location": "Chikkamagaluru, Karnataka", "client": "Organic coffee estate", "industry": "Agriculture", "use": "Removable road for tractors, trucks and workers through the monsoon", "sys": "S6", "saving": "Dirt track made usable year-round; panels reused", "vs": "dirt track", "year": ""}]; 163const RETIRED=[{"site": "Godrej Agrovet, Nasik", "built": "PCC + grid + 100 mm overlay (two-layer)"}, {"site": "JSW BPSL, Sambalpur, HD road", "built": "PCC + grid + 100 mm overlay (two-layer)"}, {"site": "JSW BPSL, Sambalpur, LW parking", "built": "PCC + grid + 100 mm overlay (two-layer)"}]; 164const $=s=>document.querySelector(s); 165const esc=s=>String(s).replace(/[&<>"]/g,c=>({'&':'&','<':'<','>':'>','"':'"'}[c])); 166function enquiryBand(){return `<section class="band"><div class="wrap"><h2>What would your road or yard cost on GridMats?</h2><p>An indicative estimate in about a minute, free. Our engineers follow with the design and the bill of quantities against your conventional section; the method statement your contractor will follow comes with your order.</p><p><a class="btn solid" href="#enquiry">${CTA}</a>
166 <a class="btn" href="https://wa.me/916362646287?text=${encodeURIComponent('Hello GridMats, I would like to talk to an engineer about my project.')}" target="_blank" rel="noopener">Talk to an engineer on WhatsApp</a></p></div></section>`} 167function sysTiles(){return `<div class="g6">${SYS.map(s=>`<a class="tile" href="#${s.slug}"><img src="${s.hex}" alt=""><span class="tag ${s.code==='S4'||s.code==='S5'||s.code==='S6'?'grey':''}">${s.tag}</span><b><span class="code">${s.code}</span> ${s.name}</b><span class="small">${s.line}</span></a>`).join('')}</div>`} 168function pageHome(){return ` 169<section class="hero2" style="background-image:url(img/hero_kutch.jpg)"><div class="wrap"><div><p class="kicker">GridMats Engineered Surface Systems · India, since 2019</p><h1>Roads and yards that go in faster, cost less and are drained by design.</h1><p class="lede">GridMats® 40 mm recycled-plastic grids for plant roads, truck yards, parking, solar parks and logistics hubs: 32 sites built and over a million square feet supplied across India, and channel partners in five countries.</p> 170<div class="chips"><span class="chip">32 sites · 12 states</span><span class="chip">Indian Patent 398992</span><a class="chip" href="#media">As seen on Shark Tank India</a><span class="chip">GreenPro certified</span></div> 171<p style="margin-top:18px"><a class="btn onimg" href="#finder">Find the right system</a> <a class="btn onimg" href="#how">Watch it go in</a></p></div> 172${qsCard('hero')}</div><span class="cap">Reliance Industries, Rann of Kutch: an S2 access road on saline flats, opened the same day</span></section> 173${trustStrip()} 174<section class="block"><div class="wrap"><p class="kicker">The menu</p><h2>Six systems. Choose by the finish you want and the load it carries.</h2><p class="small">Installed cost is designed and priced per site; product prices are ex-works, ex-GST, ex-freight. Not sure which? <a href="#finder">Three questions find the right system</a>, with its installed cost and when it opens.</p><div style="margin-top:14px">${sysTiles()}</div> 175<h3 style="margin-top:26px">Six systems. One GridMats platform.</h3><p class="small">Cement-treated gravel · stone chip · grass · honeycomb concrete · asphalt base · temporary mats. Powered by recycled-polymer cell confinement; designed with the GridMats Design Engine.</p><div class="gallery six" style="margin-top:8px"><figure><a href="#s1"><img src="img/s1_filled.webp" alt="Grey cement-treated chips filled flush in the OC-HD 40 grid" loading="lazy"></a><figcaption>S1 · cement-treated gravel, brushed flush</figcaption></figure><figure><a href="#s2"><img src="img/s2_chips_macro.webp" alt="Stone chips locked in the OC-HD 40 cells" loading="lazy"></a><figcaption>S2 · stone chips: natural, white, black or laterite</figcaption></figure><figure><a href="#s3"><img src="img/waters_courtyard_hd.webp" alt="Waters India, Bengaluru: grass and paved squares either side of a walkway" loading="lazy"></a><figcaption>S3 · grass pavers in a campus lawn (Waters India)</figcaption></figure><figure><a href="#s4"><img src="img/pgp_hex_hd.webp" alt="Concrete filled flush to the hexagon cell tops" loading="lazy"></a><figcaption>S4 · honeycomb-finish concrete</figcaption></figure><figure><a href="#s5"><img src="img/orxa_road_hd.webp" alt="Orxa Energies campus, Bengaluru: asphalt road over OC-HD 40 at the WMM/GSB interface" loading="lazy"></a><figcaption>S5 · grid in the base, asphalt on top (Orxa Energies)</figcaption></figure><figure><a href="#s6"><img src="img/tc_colour_hd.webp" alt="Red, yellow and black top-covered mats locked together" loading="lazy"></a><figcaption>S6 · top-covered mats in colour</figcaption></figure></div></div></section> 176<section class="block soft" id="how"><div class="wrap"><p class="kicker">How it goes in</p><h2>From bare ground to traffic: a gravel road in six steps</h2><p class="lede">Tap a step to jump to it in the film. Most sites open to traffic the same day.</p>${processVideo()}</div></section> 177<section class="block dark"><div class="wrap"><p class="kicker">Tested, patented, in service</p><h2>The numbers engineers ask for first</h2><div class="stats" style="margin-top:16px"><div class="stat"><b>170 t/m²</b><span>lab compression test on the empty OC-HD 40 panel (latest test report); 3,200â4,000 t/m² filled with M25 concrete, Stedrant</span></div><div class="stat"><b>2.0Ã</b><span>base modulus improvement at IIT Hyderabad, CBR 5%</span></div><div class="stat"><b>32 sites · 12 states</b><span>7 years · channel partners in 5 countries</span></div><div class="stat"><b>Patent 398992</b><span>GreenPro certified · 100% recycled polypropylene</span></div></div> 178<h3 style="margin-top:28px">What 1,000 m² of GridMats road puts in your ESG report</h3><div class="stats" style="margin-top:12px"><div class="stat"><b>6.6 t</b><span>post-consumer plastic reused (OC-HD)</span></div><div class="stat"><b>â 68 t COâe</b><span>less than a conventional concrete road, for concrete-filled GridMats (S4); LCA by Smarter Dharma, 23.8 against 92.1 kg per m²</span></div><div class="stat"><b>â 870 m³ / yr</b><span>rain returned to the ground by a permeable surface at Bengaluru rainfall</span></div><div class="stat"><b>0 °C · 0 litres</b><span>
178no heated mix, no curing water on S2 and S3</span></div></div><p class="small" style="margin-top:10px">Indicative; every handover file reports the numbers for the client's own site.</p></div></section> 179<section class="block"><div class="wrap"><p class="kicker">Where it is used</p><h2>From solar parks to airport corridors</h2><div class="grid g4 two" style="margin-top:14px">${APPS.slice(0,4).map(a=>`<a class="card" href="#${a.slug}" style="text-decoration:none;color:inherit"><img class="thumb" src="${a.img}" alt="" loading="lazy"><b style="font-family:var(--display)">${a.name}</b><br><span class="small">${a.sys}</span></a>`).join('')}</div><p style="margin-top:12px"><a class="btn sm" href="#applications">All ${APPS.length} applications</a></p></div></section> 180<section class="block soft"><div class="wrap"><p class="kicker">Projects</p><h2>In daily use at plants, yards and campuses</h2><div class="grid g3" style="margin-top:14px">${CASES.slice(0,3).map(c=>`<a class="card" href="#case-${c.id}" style="text-decoration:none;color:inherit;background:var(--bg)"><img class="thumb" src="${c.img}" alt="" loading="lazy"><span class="tag">${c.sys}</span> <b style="font-family:var(--display)">${c.title}</b><br><span class="small">${c.industry} · ${c.use}</span></a>`).join('')}</div><p style="margin-top:12px"><a class="btn sm" href="#projects">References by system</a></p></div></section> 181<section class="block"><div class="wrap"><p class="kicker">Beyond the grid</p><h2>Solar walkways, sensor floors, a living wall and pallets</h2><div style="margin-top:14px">${smartTiles()}</div></div></section> 182<section class="block dark"><div class="wrap"><p class="kicker">Watch and listen</p><h2>Hear it from the people who build it</h2>${watchBlock(false)}</div></section> 183<section class="block"><div class="wrap"><p class="kicker">In the news</p><h2>What the press has said</h2>${newsTeaser(6)}<p style="margin-top:12px"><a class="btn sm" href="#media">All media, talks and recognition</a></p></div></section> 184${enquiryBand()}`} 185// ---- round 9 (26 Sep 2026): system finder and cost-first layout; figures from site-src/data/specs.json ---- 186const FVEH=[['car','Cars, SUVs','cars'],['lcv','LCV to 7.5 t','light commercial vehicles'],['fire','Fire tender, occasional','an occasional fire tender'],['t2','Trucks to 20 t','trucks to 20 t'],['t3','Trucks 25â28 t','trucks of 25â28 t'],['mav','Tippers 36â49 t','tippers of 36â49 t'],['rtg','Over 49 t, cranes','loads over 49 t']]; 187const FFIN=[['any','Not sure'],['hard','Hard grey, dust-free'],['stone','Natural stone, permeable'],['green','Grass or soil'],['concrete','Concrete, visible hexagon'],['asphalt','Asphalt, as today'],['temporary','Temporary mats']]; 188const COST={ 189 S1:{r:[1400,1900],open:['3 days · 7 days','light vehicles · trucks, once the 7-day cubes reach 2 MPa'],rate:['300â400 m²','of grid per crew-day'],prod:['OC-HD 40','â¹900â1,150/m² by order size, ex-works']}, 190 S2:{r:[1400,1900],open:['Same day','nothing to cure'],rate:['300â400 m²','of grid per crew-day'],prod:['OC-HD 40 or OC-LW 40','â¹900â1,150/m² or â¹550â690/m², ex-works']}, 191 S3:{r:[1350,1800],open:['At once · 4â6 weeks','on foot · vehicles, once the grass has rooted'],rate:['300â400 m²','per crew-day'],prod:['Grass paver 30 mm','â¹430â495/m² by order size, ex-works']}, 192 S4:{big:'On request',sub:'priced per site; materials â¹2,300â2,850/m² on our cost sheets',open:['24 h · 7 d · 28 d','light · 40% load · full load'],rate:['Teams we train','SOP and guide; up to 3 days on site from 2,000 m², online at no extra cost below'],prod:['OC-HD 40','â¹900â1,150/m², ex-works; concrete by the client']}, 193 S5:{big:'Design-specific',sub:'â¹2,700/m² materials in a 10,000 m² example',open:['As today',"your contractor's asphalt programme"],rate:['+1 shift','per 1,000 m² for the grid'],prod:['OC-LW 40','â¹550â690/m², ex-works; OC-HD 40 for the heaviest traffic']}, 194 S6:{r:[1950,2200],sub:'for the mats, reused site after site',open:['Same day','lifted and reused after the job'],rate:['1 day','to lay or to lift'],prod:['TC mats','Heavy Duty or Light Weight']} 195}; 196const DS_ORDER=['Installed range','Application time','Test data','Product','Product cost','Reference','References']; 197function dsOrder(ds){const k=n=>{const i=DS_ORDER.indexOf(n);return i<0?99:i};return ds.slice().sort((a,b)=>k(a[0])-k(b[0])).map(d=>d[0]==='Product cost'?['Product price, for procurement',d[1]]:d)} 198function costCell(l,b,sm){return `<div><span class="lbl">${l}</span><b>${b}</b><span class="small">${sm}</span></div>`} 199// sq ft first; the m² figure sits in brackets, which addSqft leaves alone 200function costRange(c){return c.r?[`â¹${psf(c.r[0])}â${psf(c.r[1])} / sq ft`,`(â¹${inrN(c.r[0])}â${inrN(c.r[1])} / m²)${c.sub?' '+c.sub:''}`]:[c.big,c.sub]}
201function costBar(s){const c=COST[s.code];if(!c)return '';const ir=costRange(c); 202 return `<div class="costbar">${costCell('Installed cost, indicative*',ir[0],ir[1])}${costCell('Opens to traffic',c.open[0],c.open[1])}${costCell('Laying rate',c.rate[0],c.rate[1])}${costCell('Product, for procurement',c.prod[0],c.prod[1])}</div>`} 203function finderBlock(){return `<div class="finder" id="fnd"><div> 204<div class="fq"><div class="q">What are you building?</div><div class="opts">${WHAT.filter(w=>w[0]!=='other').map(w=>`<button type="button" class="opt" data-fw="${w[0]}" aria-pressed="false">${ICON(w[2])}<span>${w[1]}</span></button>`).join('')}</div></div> 205<div class="fq"><div class="q">Heaviest vehicle on it every day</div><div class="chipset">${FVEH.map(v=>`<button type="button" data-fv="${v[0]}" aria-pressed="false">${v[1]}</button>`).join('')}</div><p class="small" style="margin:6px 0 0">Gross vehicle weight. The pavement itself is designed on the axle loads from your axle survey or VDF.</p></div> 206<div class="fq"><div class="q">Finish you want to see</div><div class="chipset">${FFIN.map(v=>`<button type="button" data-ff="${v[0]}" aria-pressed="false">${v[1]}</button>`).join('')}</div></div> 207</div><div class="result" id="fOut" aria-live="polite"></div></div>`} 208let FST=null; 209function finderResult(st){const W=WHAT.find(x=>x[0]===st.what)||WHAT[0];const fin=st.fin==='any'?W[3].finish:st.fin; 210 const r=firstCut({finish:fin,veh:st.veh,area:1000,terrain:'flat',perm:'yes',rain:'mod'});const s=SYS.find(x=>x.code===r.rec)||SYS[0];const c=COST[r.rec]; 211 const V=FVEH.find(v=>v[0]===st.veh)||FVEH[0];const heavy=['C','D','E'].includes(r.cls)&&st.veh!=='fire'; 212 const why={S6:'Top-covered mats go down in a day on levelled ground: no base, no infill and no concrete, and they lift for the next site.', 213 S1:(fin==='green'&&heavy?'Grass pavers are for cars and occasional fire-lane access. ':fin==='stone'&&r.cls==='E'?'Loose chips are not for loads over 49 t. ':'')+`Built for ${V[2]} every day: OC-HD 40 filled with cement-treated chips gives a hard, dust-free surface with no saw-cut joints to crack.`+(r.cls==='E'?' Over 49 t, our engineers check the design case by case.':''), 214 S2:`Natural stone locked in ${r.pk==='hd'?'OC-HD 40, which holds it under trucks':'OC-LW 40'}: rain goes through to drainage designed below the surface, and it opens the same day.`, 215 S3:'Grass pavers keep the surface green while the base we design takes the load, and it can support green-cover requirements, subject to local approval.', 216 S4:'The visible-hexagon concrete road, filled flush to the cell tops by a contractor team we train. Offered on request and priced per site.', 217 S5:'The grid goes into the base at the GSB/WMM interface, so the layers above it can be thinner; the asphalt is laid as it always is.'}[r.rec]; 218 const PL={hd:'OC-HD 40 at â¹900â1,150/m²',lw:'OC-LW 40 at â¹550â690/m²',gp:'Grass paver 30 mm at â¹430â495/m²'}; 219 const prod=r.rec==='S6'?'TC mats, Heavy Duty or Light Weight: the mats are the installed cost.':`${PL[r.pk]||PL.hd} by order size, ex-works, ex-GST.`; 220 const ir=costRange(c);const alt=r.alt.map(a=>SYS.find(y=>y.code===a)).filter(Boolean).map(x=>`<a href="#${x.slug}">${x.code} ${x.name}</a>`).join(' · '); 221 return `<span class="lbl">Recommended for you</span><b class="big">${s.code} · ${s.name}</b><span class="small">${s.tag}</span><p style="margin:10px 0 0">${why}</p> 222<div class="fcost">${costCell('Installed cost*',ir[0],ir[1])}${costCell('Opens to traffic',c.open[0],c.open[1])}</div> 223<p class="small" style="margin:0"><b>Product:</b> ${prod}</p>${alt?`<p class="small" style="margin:6px 0 0">Also fits: ${alt}</p>`:''} 224<p style="margin:14px 0 0;display:flex;gap:8px;flex-wrap:wrap"><a class="btn solid" href="#enquiry">${CTA}</a><a class="btn" href="#${s.slug}">About ${s.code}</a></p> 225<p class="small" style="margin:10px 0 0">*Indicative, from completed sites and our cost sheets. Your free estimate prices your own site from its area, soil, rainfall and levels.</p>`} 226function finderShow(){const root=$('#fnd');if(!root||!FST)return;
227 [['fw','what'],['fv','veh'],['ff','fin']].forEach(([a,k])=>root.querySelectorAll(`[data-${a}]`).forEach(b=>{const on=b.dataset[a]===FST[k];b.classList.toggle('on',on);b.setAttribute('aria-pressed',on?'true':'false')})); 228 $('#fOut').innerHTML=addSqft(finderResult(FST))} 229function bindFinder(){if(!$('#fnd'))return;if(!FST){const L=lead();const W=WHAT.find(x=>x[0]===L.what&&x[0]!=='other')||WHAT[0]; 230 FST={what:W[0],veh:FVEH.some(v=>v[0]===L.veh)?L.veh:W[3].veh,fin:FFIN.some(v=>v[0]===L.fin)?L.fin:W[3].finish,tv:!!L.veh,tf:!!L.fin}}finderShow()} 231// the answers go into the visitor's lead, so the free estimate starts from them 232document.addEventListener('click',e=>{if(!FST||!e.target.closest('#fnd'))return; 233 const w=e.target.closest('[data-fw]'),v=e.target.closest('[data-fv]'),f=e.target.closest('[data-ff]'); 234 if(w){const W=WHAT.find(x=>x[0]===w.dataset.fw);if(!W)return;FST.what=W[0];if(!FST.tv)FST.veh=W[3].veh;if(!FST.tf)FST.fin=W[3].finish} 235 else if(v){FST.veh=v.dataset.fv;FST.tv=true}else if(f){FST.fin=f.dataset.ff;FST.tf=true}else return; 236 const L=lead();L.what=FST.what;L.veh=FST.veh;L.fin=FST.fin;saveLead(L);finderShow(); 237 if(f&&window.innerWidth<860){const o=$('#fOut');if(o)o.scrollIntoView({behavior:'smooth',block:'nearest'})}}); 238function pageSystems(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Systems & products</div><h1 style="margin-top:8px">Systems and products</h1><p class="lede">A system is what gets built: the finish you see, the load it carries, the base and the method. A product is what GridMats supplies for it. Start with the three questions below: they give you a system, its installed cost per square foot and when it opens to traffic. Product prices for procurement teams follow further down.</p><p class="small" style="max-width:75ch">Cell confinement is not new: it was developed with the US Army Corps of Engineers in the late 1970s and has been used worldwide since. In India, cell-filled concrete pavement is among the new technologies for rural roads under PMGSY. GridMats adds a recycled-plastic grid, tested at IIT Hyderabad and patented in India (Indian Patent 398992).</p> 239<div class="grid g4" style="margin-top:16px"><a class="card" href="#find-system" onclick="document.getElementById('find-system').scrollIntoView({behavior:'smooth'});return false" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">1 · Find the right system</b><p class="small">Three questions: what you are building, the heaviest vehicle and the finish. The answer comes with its installed cost and opening time.</p></a><a class="card" href="#sys-list" onclick="document.getElementById('sys-list').scrollIntoView({behavior:'smooth'});return false" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">2 · Installed cost and time</b><p class="small">S1âS6 side by side: installed cost per sq ft and m², time to traffic, loads and finish.</p></a><a class="card" href="#catalogue" onclick="document.getElementById('catalogue').scrollIntoView({behavior:'smooth'});return false" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">3 · Products for procurement</b><p class="small">Grids, mats and accessories: sizes, lab tests and the price by order size, ex-works. Datasheets are under Resources.</p></a><a class="card" href="#beyond" onclick="document.getElementById('beyond').scrollIntoView({behavior:'smooth'});return false" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">4 · Beyond the grid</b><p class="small">Solar Walkway, IoT sensors, the Cool Green Wall, pallets and MLP boards.</p></a></div> 240<h2 id="find-system" style="margin-top:30px">1 · Find the right GridMats system</h2><p class="small">Three questions. The answer shows the system, why it fits, its installed cost and when it opens; your free estimate then prices your own site.</p>${finderBlock()} 241<h2 id="sys-list" style="margin-top:36px">2 · Installed cost and time, system by system</h2><p class="small">Installed ranges from completed sites and our cost sheets, with the time to traffic. Every site is designed and priced from its own survey.</p> 242<div class="tbl" style="margin-top:12px"><table><tr><th>System</th><th>Installed cost, indicative*</th><th>Opens to traffic</th><th>Heaviest vehicle</th><th>Finish</th><th>Product supplied</th></tr> 243<tr><td><a href="#s1"><b>S1</b> Cement-treated gravel</a> <span class="tag">lead</span></td><td><b>â¹1,400â1,900/m²</b></td><td>Light vehicles at 3 days; trucks at 7, once the cubes reach 2 MPa</td><td>Vehicles up to 49 t gross</td><td>Hard grey, dust-free</td><td>OC-HD 40 (trucks) or OC-LW 40 (lighter traffic)</td></tr> 244<tr><td><a href="#s2"><b>S2</b> Stone chip, gravel, pebble</a></td><td><b>â¹1,400â1,900/m²</b></td><td>Same day</td><td>Cars to trucks</td><td>Natural stone, permeable</td><td>OC-HD 40 or OC-LW 40; the 30 mm grid for paths and campus roads</td></tr> 245<tr><td><a href="#s3"><b>S3</b> Grass and soil</a></td><td><b>â¹1,350â1,800/m²</b></td><td>At once on foot; vehicles in 4â6 weeks</td><td>Cars; fire-lane access on a designed base</td><td>Green</td><td>Grass paver 30 mm (cars), 20 mm (walkways) or OC-LW 40</td></tr> 246<tr><td><a href="#s4"><b>S4</b> Honeycomb-finish concrete</a></td><td>On request, priced per site; materials â¹2,300â2,850/m² on our cost sheets</td><td>24 h light; 40% load at 7 days; full load at 28 days</td><td>Trucks up to 49 t gross</td><td>Concrete, visible hexagon</td><td>OC-HD 40 + concrete</td></tr> 247<tr><td><a href="#s5"><b>S5</b> Grid at the GSB/WMM interface</a></td><td>Design-specific</td><td>Your contractor's asphalt programme</td><td>By design</td><td>Asphalt</td><td>OC-LW 40 (OC-HD 40 for the heaviest)</td></tr> 248<tr><td><a href="#s6"><b>S6</b> Temporary roads and surfaces</a></td><td><b>â¹1,950â2,200/m²</b> for the mats, reused site after site; ground levelling only</td><td>Same day; lifted and reused</td><td>Site traffic, crane pads</td><td>Top-covered mats, in colour</td><td>TC mats, Heavy Duty or Light Weight</td></tr></table></div> 249<p class="small">*Installed cost varies with local material availability, labour, transport, base design and site conditions; every site is priced from its own design. For comparison, an IRC:58 concrete road runs â¹2,900â3,200 per m² on our cost sheets and needs about 28 days of curing before full load. Heaviest vehicle is the gross weight; the pavement is designed on the axle loads from your axle survey or VDF. Product prices for procurement are in section 3.</p><div style="margin-top:16px">${sysTiles()}</div> 250<div class="note" style="margin-top:14px"><b>What we do not do.</b> We never put the grid under a concrete slab. Concrete is offered only as the flush-filled honeycomb finish (S4), on request, built by a contractor team we train.</div> 251<h2 id="catalogue" style="margin-top:34px">3 · Products for procurement</h2><p class="small">For buyers ordering the grid itself: sizes, lab tests and the price by order size. Most projects start from the installed system cost above. On a project quote the product rate also carries the training of your contractorâs team, so there is one PO.</p><div class="grid g2" style="margin-top:12px;align-items:center"><img src="img/range_display.webp" alt="The GridMats range: OC-HD 40 and OC-LW 40 with stone, laterite and soil fills" style="border-radius:12px;aspect-ratio:16/10;object-fit:cover"><div><img src="img/panel_hd.webp" alt="Two OC-HD 40 panels propped together: the hexagonal cells and the perforated base" style="border-radius:12px;aspect-ratio:16/10;object-fit:cover;width:100%;margin-bottom:12px"><p>Every product ships with its dimensions, mass, material (100% post-consumer polypropylene for the grids), certificates (GreenPro, patent 398992, PCT WO2023/100191), load tests with the laboratory named, pack size and the lead time confirmed with each purchase order. Terms: 100% advance with the order, GST 18% extra, transport at cost.</p></div></div> 252<div class="grid g2" style="margin-top:12px"><figure style="margin:0"><img src="img/gp30_panel.jpg" alt="GP-30 grass paver, 30 mm: small octagonal cells" width="640" height="480" loading="lazy" style="border-radius:12px;aspect-ratio:4/3;object-fit:cover;width:100%"><figcaption class="small">GP-30, 30 mm: grass for cars and fire-lane access on a base we design; gravel for paths and campus roads, as at Garden City University.</figcaption></figure><figure style="margin:0"><img src="img/gp20_panel.jpg" alt="GP-20 grass paver, 20 mm: small diamond cells" width="640" height="480" loading="lazy" style="border-radius:12px;aspect-ratio:4/3;object-fit:cover;width:100%"><figcaption class="small">GP-20, 20 mm: walkways and lawns.</figcaption></figure></div> 253<div class="tbl" style="margin-top:18px"><table><tr><th>Product</th><th>Size · mass</th><th>Lab load test on the panel</th><th>Used in</th><th class="n">Price by order size, ex-GST ex-freight</th></tr> 254<tr><td><b>OC-HD 40</b></td><td>459 à 558 à 40 mm · 1.7 kg (6.6 kg/m²)</td><td>170 t/m² empty (latest test report) · filled: about 320 t/m² with cold asphalt, 3,200â4,000 t/m² with M25 concrete at 5 days (Stedrant, 2021)</td><td>S1, S2, S4, S5 heavy</td><td class="n">â¹900â1,150/m²</td></tr> 255<tr><td><b>OC-LW 40</b></td><td>500 à 500 à 40 mm · ~4 kg/m²</td><td>105 / 200 t/m² empty / filled, in-house; third-party test due Q4 2026</td><td>S1 lighter traffic, S2 cars, S3 soil, S5</td><td class="n">â¹550â690/m²</td></tr> 256<tr><td><b>Grass paver 30 / 20 mm</b></td><td>250 à 250 à 30 mm · ~3 kg/m²</td><td>Third-party load test pending</td><td>S3; the 30 mm grid also with gravel for paths and campus roads (S2)</td><td class="n">â¹430â495/m² (30 mm)<br>â¹370â420/m² (20 mm)</td></tr> 257<tr><td><b>TC mats</b><br><span class="small">Heavy Duty · Light Weight</span></td><td>1000 à 500 à 50 mm · about 6.5 kg</td><td>Crane test, GE wind site</td><td>S6 temporary roads and surfaces, crane pads</td><td class="n">â¹1,950â2,200/m²</td></tr> 258<tr><td><b>Accessories</b></td><td>Geotextile 125â200 gsm · U-nails 8 mm, 175 à 100 à 175 mm</td><td>â</td><td>All systems</td><td class="n">â¹40/m² · â¹5â10 each</td></tr></table></div><p class="small">Load tests are laboratory compression tests on a single panel. They compare panels; the capacity of a pavement comes from the base designed for its traffic and soil.</p> 259<h3 style="margin-top:22px">Product prices by order size</h3><div class="tbl" style="margin-top:8px"><table><tr><th>â¹ per m² (â¹ per sq ft below), ex-works · ex-GST · ex-freight</th><th class="n">Under 1,000 m²<br><span class="small">under 10,800 sq ft</span></th><th class="n">1,000â2,500 m²<br><span class="small">10,800â26,900 sq ft</span></th><th class="n">2,500â5,000 m²<br><span class="small">26,900â53,800 sq ft</span></th><th class="n">5,000â25,000 m²<br><span class="small">
25953,800 sq ftâ2.7 lakh sq ft</span></th><th class="n">Over 25,000 m² or 12-month contract<br><span class="small">over 2.7 lakh sq ft</span></th></tr> 260<tr><td><b>OC-HD 40</b></td><td class="n">1,150<br><span class="small">â¹107/sq ft</span></td><td class="n">990<br><span class="small">â¹92/sq ft</span></td><td class="n">960<br><span class="small">â¹89/sq ft</span></td><td class="n">935<br><span class="small">â¹87/sq ft</span></td><td class="n"><b>900</b><br><span class="small">â¹84/sq ft</span></td></tr> 261<tr><td><b>OC-LW 40</b></td><td class="n">690<br><span class="small">â¹64/sq ft</span></td><td class="n">650<br><span class="small">â¹60/sq ft</span></td><td class="n">620<br><span class="small">â¹58/sq ft</span></td><td class="n">590<br><span class="small">â¹55/sq ft</span></td><td class="n"><b>550</b><br><span class="small">â¹51/sq ft</span></td></tr> 262<tr><td><b>Grass paver 30 mm</b></td><td class="n">495<br><span class="small">â¹46/sq ft</span></td><td class="n">470<br><span class="small">â¹44/sq ft</span></td><td class="n">455<br><span class="small">â¹42/sq ft</span></td><td class="n">440<br><span class="small">â¹41/sq ft</span></td><td class="n"><b>430</b><br><span class="small">â¹40/sq ft</span></td></tr> 263<tr><td><b>Grass paver 20 mm</b></td><td class="n">420<br><span class="small">â¹39/sq ft</span></td><td class="n">400<br><span class="small">â¹37/sq ft</span></td><td class="n">390<br><span class="small">â¹36/sq ft</span></td><td class="n">380<br><span class="small">â¹35/sq ft</span></td><td class="n"><b>370</b><br><span class="small">â¹34/sq ft</span></td></tr> 264<tr><td><b>TC mats</b></td><td class="n">2,200<br><span class="small">â¹204/sq ft</span></td><td class="n">2,100<br><span class="small">â¹195/sq ft</span></td><td class="n">2,050<br><span class="small">â¹190/sq ft</span></td><td class="n">2,000<br><span class="small">â¹186/sq ft</span></td><td class="n"><b>1,950</b><br><span class="small">â¹181/sq ft</span></td></tr> 265</table></div> 266<p class="small">The ladder is the base product price. On a project quote, the on-site training of your contractorâs team is built into the product rate: one PO. Online training is at no extra cost. The tier is set by the square metres on one purchase order. A 12-month rate contract for a group, a park or a repeat buyer is priced in the last column whatever the size of each call-off. Prices ex-works Bengaluru; GST 18% and freight extra.</p> 267${related('systems')}<h2 id="beyond" style="margin-top:34px">4 · Beyond the grid</h2><p>Solar Walkway, sensors, a living wall, and pallets and boards, from the same recycled-plastic know-how.</p><div style="margin-top:12px">${smartTiles()}</div> 268</div></section>${enquiryBand()}`} 269function pageProducts(){return pageSystems()} 270function pageSystem(s){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠<a href="#systems">Systems & products</a> ⺠${s.code}</div> 271<div class="hero" style="padding-block:18px"><div><p class="kicker">${s.code} · ${s.name} · ${s.tag}</p><h1>${s.line}</h1><p class="lede">${s.what}</p><p><a class="btn solid" href="#enquiry">${CTA}</a> <a class="btn" href="${s.flier}" target="_blank" rel="noopener">Download the flier (PDF)</a> <a class="btn" href="${s.install}" target="_blank" rel="noopener">Installation at a glance (PDF)</a></p></div><div><img src="${s.hero}" alt="" style="aspect-ratio:16/10"><p class="small">${s.heroCap}</p></div></div> 272${costBar(s)}<div class="stats" style="margin-top:22px">${s.stats.map(x=>`<div class="stat"><b>${x[0]}</b><span>${x[1]}</span></div>`).join('')}</div> 273${s.seq?`<h3 style="margin-top:26px">Grid, fill, finished</h3><div class="seq">${s.seq.map((q,i)=>`<figure><img src="${q[0]}" alt=""><figcaption><b>${i+1}</b>${q[1]}</figcaption></figure>`).join('')}</div>`:''} 274<div class="grid g2" style="margin-top:26px"><div><h3>Why it wins</h3><ul style="padding-left:18px;margin:8px 0">${s.wins.map(w=>`<li><b>${w[0]}</b> ${w[1]}</li>`).join('')}</ul><h3 style="margin-top:14px">Where it fits</h3><p>${s.where}</p></div><div>${s.xs?`<h3>Build-up</h3><div class="xs" style="margin-top:8px"><img src="${s.xs}" alt="${s.code} cross-section"></div>`:(s.code==='S6'?`<h3>Method</h3><p>Level and compact the ground, lay a geotextile where it is soft, then lock the mats edge to edge, working out from the access point. Mark lanes and pads with the mat colours. When the job ends, lift the mats in reverse order, clean them and stack them for the next site.</p>`:`<h3>Method</h3><p>Base by load class and CBR, lean-concrete bedding or plastic, grid wet-set or nailed, flowable M30âM40 blend on 10 mm aggregate filled flush to the cell tops, curing compound. Built by your contractorâs team, trained by GridMats with our SOP and installation guide; mix design approved before the pour; slump per truck; finish height checked at the cell top.</p>`)}</div></div> 275<div class="grid g3 pick" style="margin-top:26px"><div class="card"><h3>Choose ${s.code} when</h3><ul>${s.choose.map(x=>`<li>${x}</li>`).join('')}</ul></div><div class="card"><h3>Not ideal when</h3><ul>${s.avoid.map(x=>`<li>${x}</li>`).join('')}</ul></div><div class="card"><h3>What we need from you</h3><ul>${NEED.map(x=>`<li>${x}</li>`).join('')}</ul><p style="margin-top:8px"><a class="btn sm solid" href="#enquiry">${CTA}</a></p></div></div> 276<h3 style="margin-top:26px">Datasheet</h3><div class="tbl" style="margin-top:8px"><table><tr>${dsOrder(s.ds).map(d=>`<th>${d[0]}</th>`).join('')}</tr><tr>${dsOrder(s.ds).map(d=>`<td>${d[1]}</td>`).join('')}</tr></table></div><p class="small">*Installed cost varies with local material availability, labour, transport, base design and site conditions; every site is priced from its own design. Product prices exclude GST (18%) and logistics.</p> 277<h3 style="margin-top:26px">On site</h3><div class="gallery" style="margin-top:8px">${s.gallery.map(g=>`<figure><img src="${g[0]}" alt=""><figcaption>${g[1]}</figcaption></figure>`).join('')}</div> 278<div class="grid g3" style="margin-top:22px">${s.code==='S6'?`<div class="card"><h3>Laying and lifting at a glance</h3><p class="small">Ground preparation, the geotextile rule for soft ground, the laying and locking sequence, and lifting, cleaning and stacking for the next site, on one page. The full laying and lifting guide comes with your order.</p><p style="margin-top:8px"><a class="btn sm" href="${s.install}" target="_blank" rel="noopener">Download (PDF, 1 page)</a></p></div><div class="card"><h3>Test data</h3><p class="small">Crane-pad trial at a GE wind site. Send us the heaviest load and the ground conditions and we confirm the grade and the mat layout before you order.</p></div><div class="card"><h3>Ground and water</h3><p class="small">Mats sit on levelled, compacted ground, over a geotextile where it is soft. Rain runs off the closed surface, so grade the ground to fall and keep it drained.</p></div></div>`:`<div class="card"><h3>Installation at a glance</h3><p class="small">The six steps, what you need and when it opens, on one page. The installation guide comes by email on request; the SOP, the hold-point checklists and the method statement for your site come with your order. We train your contractorâs team: on site for up to 3 days for orders of 2,000 m² or more once the site is confirmed ready, online at no extra cost below that; on-site training is built into the product rate (one PO).</p><p style="margin-top:8px"><a class="btn sm" href="${s.install}" target="_blank" rel="noopener">Download (PDF, 1 page)</a></p></div><div class="card"><h3>Test reports</h3><p class="small">
278Bureau Veritas and Stedrant load tests, GreenPro, patent 398992, IIT Hyderabad research. See <a href="#engineering">Engineering</a>.</p></div><div class="card"><h3>Drainage and terrain</h3><p class="small">Designs are customised to geography, rainfall intensity and topography: sub-surface drains sized to the rainfall class, cross-sections for plain and steep terrain.</p></div></div>`} 279${s.code==='S2'?`<h3 style="margin-top:26px">See it go in</h3>${processVideo()}<h3 style="margin-top:26px">Before and after</h3><div style="margin-top:10px">${beforeAfter()}</div>`:''}${related(s.slug)}</div></section>${enquiryBand()}`} 280function pageApplications(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Applications</div><h1 style="margin-top:8px">Applications by segment</h1><div class="grid g4" style="margin-top:16px">${APPS.map(a=>`<a class="card" href="#${a.slug}" style="text-decoration:none;color:inherit"><img class="thumb" src="${a.img}" alt=""><b style="font-family:var(--display)">${a.name}</b><br><span class="small">${a.sys}</span></a>`).join('')}</div></div></section>${enquiryBand()}`} 281function pageApp(a){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠<a href="#applications">Applications</a> ⺠${a.name}</div><div class="hero" style="padding-block:18px"><div><p class="kicker">${a.name} · ${a.sys}</p><h1>${a.line}</h1><p><a class="btn solid" href="#enquiry">${CTA}</a> <a class="btn" href="${a.flier}" target="_blank" rel="noopener">Flier (PDF)</a></p></div><div><img src="${a.img}" alt="" style="aspect-ratio:16/10"><p class="small">${a.cap}</p></div></div><div class="grid g2"><div><h3>What we supply</h3><ul style="padding-left:18px">${a.supply.map(x=>`<li>${x}</li>`).join('')}</ul></div><div><h3>Why it is used</h3><ul style="padding-left:18px">${a.why.map(x=>`<li>${x}</li>`).join('')}</ul><div class="card" style="margin-top:12px"><b style="font-family:var(--display)">Reference</b><p>${a.ref}</p></div></div></div></div></section>${enquiryBand()}`} 282function pageProjects(){const SYSN={S1:'Cement-treated gravel',S2:'Stone chip, gravel, pebble',S3:'Grass and soil',S4:'Honeycomb-finish concrete',S5:'Grid at the GSB/WMM interface, asphalt on top',S6:'Temporary roads and surfaces'}; 283 const tbl=(code)=>{const rows=REFS.filter(r=>r.sys===code||(code==='S4'&&r.sys.startsWith('S4'))||((code==='S2'||code==='S3')&&r.sys==='S4 + S2/S3'));if(!rows.length)return '';return `<h3 style="margin-top:26px"><span style="color:var(--red)">${code}</span> ${SYSN[code]}</h3><div class="tbl" style="margin-top:8px"><table><tr><th>Project</th><th>Location</th><th>Client</th><th>Industry</th><th>Use case</th><th>Saving per m², indicative*</th></tr>${rows.map(r=>`<tr><td><b>${esc(r.project)}</b>${r.year?' <span class="small">'+r.year+'</span>':''}</td><td>${esc(r.location)}</td><td>${esc(r.client)}</td><td>${esc(r.industry)}</td><td>${esc(r.use)}</td><td>${esc(r.saving)}</td></tr>`).join('')}</table></div>`}; 284 return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Projects</div><h1 style="margin-top:8px">32 sites across 12 states since 2019</h1><p class="lede">References by system: who, where, what industry, what the surface does for them, and what it saved against the section they would otherwise have built.</p> 285<h3 style="margin-top:20px">Case studies</h3><div class="grid g3" style="margin-top:10px">${CASES.map(c=>`<a class="card" href="#case-${c.id}" style="text-decoration:none;color:inherit"><img class="thumb" src="${c.img}" alt=""><span class="tag">${c.sys}</span> <b style="font-family:var(--display)">${c.title}</b><br><span class="small">${c.industry} · ${c.use}</span></a>`).join('')}</div> 286${['S1','S2','S3','S4','S5','S6'].map(tbl).join('')} 287<p class="small" style="margin-top:10px">*Against the conventional section for that use case (concrete, bituminous or paver blocks with drains), from our cost sheets and the design engine at Bengaluru rates; your proposal carries the figure for your own section.</p></div></section>${enquiryBand()}`} 288function pageCase(c){const s=SYS.find(x=>x.code===c.sys);return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠<a href="#projects">Projects</a> ⺠${c.title}</div><div class="hero" style="padding-block:18px"><div><p class="kicker">${c.sys}${s?' · '+s.name:''}</p><h1>${c.title}</h1><p class="lede">${c.client} · ${c.location} · ${c.industry}${c.year?' · '+c.year:''}</p><p>${c.text}</p><p><b>Use case:</b> ${c.use}. <b>Saving per m², indicative:</b> ${c.saving}.</p><p>${s?`<a class="btn" href="#${s.slug}">About ${c.sys}</a> `:''}<a class="btn solid" href="#enquiry">Estimate a similar site</a></p></div><img src="${c.img}" alt="${c.title}" style="aspect-ratio:4/3"></div>${c.gallery?`<h2 style="margin-top:10px">From the site</h2><div class="gallery" style="margin-top:10px">${c.gallery.map(p=>`<figure><img src="${p[0]}" alt="${p[1]}" loading="lazy"><figcaption>${p[1]}</figcaption></figure>`).join('')}</div>`:''}<div class="grid g3" style="margin-top:18px"><div class="card"><h3>The brief</h3><p class="small">What the client needed, the ground and the traffic. Written with the client's approval before publication.</p></div><div class="card"><h3>What was built</h3><p class="small">Layers, product, crew-days, opening date; from the register and the handover file.</p></div><div class="card"><h3>What we would specify today</h3><p class="small">The current system and drainage provisions for the same site.</p></div></div></div></section>${enquiryBand()}`} 289function pageEngineering(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Resources</div><h1 style="margin-top:8px">Engineering and resources</h1><p class="lede" style="margin-top:10px">Test data, data sheets, cross-sections, specification clauses and one-page installation sheets for GridMats. New to the words engineers use? See <a href="#glossary">Terms we use</a>, a plain-English glossary.</p><div class="grid g4" style="margin-top:16px"><div class="card"><h3>Test data</h3><p class="small">Laboratory compression tests on the panel. OC-HD 40: 170 t/m² empty (latest test report); filled, about 320 t/m² with cold asphalt and 3,200â4,000 t/m² with M25 concrete at 5 days (Stedrant, 2021). OC-LW 40: 105 / 200 t/m² in-house; third-party test due Q4 2026. Panel tests compare panels; a pavement's capacity comes from the base designed for its traffic and soil. RoHS compliant and polypropylene confirmed by FTIR (NABL-accredited lab, 2023); melting-point report on request.</p></div><div class="card"><h3>IIT Hyderabad research</h3><p class="small">Modulus improvement factor 2.00 at CBR 5% and 1.63 at CBR 10%, from large-scale tank tests with OC-LW 40 at the GSB/WMM interface (report, October 2025). Presented at TGS2026, IISc Bengaluru, for publication by Springer.</p></div><div class="card"><h3>The design engine</h3><p class="small">Send CBR, load, traffic, rainfall, terrain and finish; our engineers return every permanent system designed and priced, with the conventional comparison.</p></div><div class="card"><h3>Installation and training</h3><p class="small">A one-page installation sheet for each system is open to all, in the library below. The installation guide comes by email on request; the SOP, the hold-point checklists and the method statement for your site come with your order, and we train your contractorâs execution team: on site for up to 3 days for orders of 2,000 m² or more, once you confirm in writing that the site is ready; online at no extra cost below that. On-site training is built into the product rate on your quote, so there is one PO with no separate service order; online training is at no extra cost.</p></div></div> 290<div class="grid g2" style="margin-top:22px;align-items:center"><img src="img/iith_tank.webp" alt="IIT Hyderabad test tank" style="border-radius:12px;aspect-ratio:16/10;object-fit:cover"><div><h3>Drainage and terrain</h3><p>GridMats gravel and grass designs are customised to the geography, rainfall intensity and topography of the site: sub-surface drains sized to four rainfall classes, cross-sections for flat, graded, steep and embankment sites. On the permeable systems the rain is drained below the surface.</p><h3 style="margin-top:12px">Certificates</h3><div class="gallery"><figure><img src="img/greenpro.webp" alt=""><figcaption>GreenPro GPGEP277001</figcaption></figure><figure><img src="img/patent.webp" alt=""><figcaption>Indian Patent 398992</figcaption></figure><figure><img src="img/award_cert.webp" alt=""><figcaption>Adani GreenTalks 2025, SDG 9</figcaption></figure></div></div></div> 291${libBlock()}${related('engineering')}</div></section>${enquiryBand()}`} 292function pageAbout(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠About</div><h1 style="margin-top:8px">Our story</h1><div class="grid g2" style="margin-top:16px;align-items:center"><div><p class="lede">GridMats began inside PotHoleRaja, the civic start-up that has mended more than 20,000 potholes across Indian cities. The question that followed was simple: if recycled plastic can hold a pothole repair together, can it hold a road? Seven years, a patent, a Shark Tank pitch and 32 sites later, the answer is the six systems on this site.</p><ul style="padding-left:18px"><li><b>2019</b> first GridMats sites</li><li><b>2021</b> Indian Patent 398992 filed on 1 December; the patent is in force from that date</li><li><b>2023</b> PCT application published as WO/2023/100191</li><li><b>2024</b> Shark Tank India, season 3</li><li><b>2025</b> Adani GreenTalks award, SDG 9 · IIT Hyderabad research programme · RINAC and Reliance sites</li><li><b>2026</b> six systems, from permanent roads to temporary surfaces; exports to five countries; urban-heat-island (UHI) patent filed; Climate Redesign Award at Delhi Climate Innovation Week</li></ul></div><img src="img/award_team.webp" alt="The GridMats team receiving the Adani GreenTalks award" style="border-radius:12px;max-height:420px;object-fit:cover"></div> 293<h3 style="margin-top:26px">The team</h3><div class="grid g4" style="margin-top:8px">${TEAM.map(t=>`<div class="card" style="text-align:center"><img src="${t.img}" alt="${t.name}" style="width:120px;height:120px;border-radius:50%;object-fit:cover;display:block;margin:0 auto 10px"><b style="font-family:var(--display)">${t.name}</b><br><span class="small" style="color:var(--red)">${t.role}</span>${t.note?`<br><span class="small">${t.note}</span>`:''}${t.li?`<br><a class="btn sm" style="margin-top:8px" href="${t.li}" target="_blank" rel="noopener">Connect on LinkedIn</a>`:''}</div>`).join('')}</div> 294<h3 style="margin-top:26px">Awards and certifications</h3><div class="grid g4" style="margin-top:8px"><div class="card"><b>Indian Patent 398992</b><br><span class="small">In force from 1 Dec 2021 · PCT WO/2023/100191</span></div><div class="card"><b>UHI patent</b><br><span class="small">Urban heat island, filed 2026</span></div><div class="card"><b>GreenPro</b><br><span class="small">
294GPGEP277001, CII</span></div><div class="card"><b>Adani GreenTalks 2025</b><br><span class="small">SDG 9 award</span></div><div class="card"><b>Climate Collective</b><br><span class="small">CCF-CIC-003</span></div><div class="card"><b>Climate Redesign Award 2026</b><br><span class="small">Climate Collective Foundation, Delhi Climate Innovation Week</span></div><div class="card"><b>Shark Tank India S3</b><br><span class="small">Featured pitch, 2024</span></div><div class="card"><b>TGS 2026, IISc</b><br><span class="small">IIT Hyderabad research presented, for publication by Springer</span></div><div class="card"><b>Urban Mobility Challenge 2023</b><br><span class="small">Recognition</span></div><div class="card"><b>BAICONF 2026</b><br><span class="small">Paper submitted</span></div></div> 295<div style="margin-top:30px"><h2>Exports and channel partners</h2><p>GridMats is exported for installation by local channel partners in Nigeria, Romania, Canada, the USA, Mauritius and other countries. Partners receive the systems manual, the method statements, the design engine output for their sites and installer training (online or on site).</p><p><a class="btn" href="#partners">Partner enquiry</a></p></div> 296<h3 style="margin-top:26px">In the media</h3>${newsTeaser(6)}<p style="margin-top:10px"><a class="btn sm" href="#media">All media, podcasts, talks and recognition</a></p>${related('about')} 297<h3 style="margin-top:26px">From the blog</h3><div class="grid g3" style="margin-top:8px"><a class="card" href="https://www.gridmats.com/post/discover-sustainable-wall-surface-designs-for-your-space" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Discover sustainable wall surface designs for your space</b><br><span class="small">7 Sep 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/explore-unique-wall-surfaces-online-durable-and-sustainable-options" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Explore unique wall surfaces: durable and sustainable options</b><br><span class="small">2 Sep 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/why-intelligent-infrastructure-systems-are-vital-today" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">
297Why intelligent infrastructure systems are vital today</b><br><span class="small">2 Sep 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/sustainable-and-efficient-gridmats-solutions-for-load-bearing-surfaces" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Sustainable and efficient GridMats solutions for load-bearing surfaces</b><br><span class="small">2 Sep 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/revolutionize-your-space-with-innovative-pallet-solutions" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Innovative pallet solutions for your site</b><br><span class="small">24 Aug 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/eco-friendly-load-bearing-mats-sustainable-solutions-with-gridmats" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Eco-friendly load-bearing mats with GridMats</b><br><span class="small">4 Aug 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/revolutionize-logistics-with-innovative-pallet-systems-pallet-solutions" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Innovative pallet systems for logistics</b><br><span class="small">30 Jun 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/eco-friendly-road-materials-for-sustainable-road-construction" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Eco-friendly road materials for sustainable road construction</b><br><span class="small">30 Jun 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/building-the-future-with-smart-transport-systems" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Building the future with smart transport systems</b><br><span class="small">30 Jun 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/innovative-solutions-with-permeable-paving-options" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Innovative solutions with permeable paving</b><br><span class="small">30 Jun 2026 · Dr Prathap B Rao</span></a><a class="card" href="https://www.gridmats.com/post/optimizing-stability-with-ground-reinforcement-techniques" target="_blank" rel="noopener" style="text-decoration:none;color:inherit"><b style="font-family:var(--display)">Optimising stability with ground reinforcement</b><br><span class="small">30 Jun 2026 · Dr Prathap B Rao</span></a></div></div></section>${enquiryBand()}`} 298function pagePartners(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Channel partners</div><h1 style="margin-top:8px">Bring GridMats to your market</h1><p class="lede">GridMats is exported for installation by local channel partners in Nigeria, Romania, Canada, the USA, Mauritius and other countries. Partners receive the systems manual, the method statements, the design engine output for their sites and installer training (online or on site).</p> 299<div class="grid g3" style="margin-top:16px"><div class="card"><h3>Stocking distributor</h3><p class="small">Outside India: US$25,000, of which â¹10 lakh worth of GridMats stock ships to you at international partner prices. In India: the â¹20 lakh programme with â¹10 lakh of inventory. Both include installer training, the marketing kit, design support and territory rights. Sell from stock, price to your market, keep the margin.</p></div><div class="card"><h3>Project partner</h3><p class="small">No stock: register the project, we design and price it, you install to the method statement and earn the commission or the resale margin.</p></div><div class="card"><h3>GridMats-trained installer</h3><p class="small">Trained by GridMats on the SOP; buys through the distributor; listed as a GridMats-trained installer.</p></div></div> 300<div class="grid g2" style="margin-top:22px;align-items:start"><form id="pf" class="form" onsubmit="return false"><label>Name<input id="p_name"></label><label>Company<input id="p_co"></label><label>Email<input id="p_email" type="email"></label><label>Phone / WhatsApp<input id="p_phone"></label><label class="w">Country and city<input id="p_country"></label><label>Partnership model<select id="p_model"><option>Stocking distributor (US$25,000 abroad, â¹20 lakh in India)</option><option>Project partner / agent</option><option>Master distributor for a country</option><option>Not sure yet</option></select></label><label>Your sector<select id="p_sector"><option>Building materials distribution</option><option>Landscape / paving contractor</option><option>Civil / EPC contractor</option><option>Solar or wind EPC</option><option>Consultant / architect</option><option>Other</option></select></label><label class="w">Projects or clients in hand<textarea id="p_pipe" rows="2"></textarea></label><div class="w" style="display:flex;gap:8px;flex-wrap:wrap;align-items:center"><button class="btn solid" id="p_send">Get the partner pack</button><span class="small" role="alert" id="p_err"></span></div><p class="w small">We use these details for your partner enquiry, as our <a href="#privacy">Privacy Policy</a> explains.</p></form> 301<div><div class="result" id="pOut"><p class="kicker">Partner pack</p><b class="big">The mutual NDA and the enquiry checklist</b><p>Fill the form to download the NDA (for your counsel), the partner enquiry checklist and the programme summary for your country. Our partner desk gets your details and calls you within two working days.</p></div><pre id="pPayload" hidden></pre></div></div></div></section>${enquiryBand()}`} 302function bindPartners(){$('#p_send').addEventListener('click',()=>{const v=id=>($('#'+id).value||'').trim();
302if(checkFields([[$('#p_name'),vName(v('p_name'))],[$('#p_co'),vCompany(v('p_co'))],[$('#p_email'),vEmail(v('p_email'))],[$('#p_phone'),vPhone(v('p_phone'))],[$('#p_country'),vPlace(v('p_country'),'country and city')]])){$('#p_err').textContent='Please correct the fields marked below.';return}$('#p_err').textContent='';{const L=lead();L.name=L.name||$('#p_name').value.trim();L.company=L.company||$('#p_co').value.trim();L.email=L.email||$('#p_email').value.trim();L.phone=L.phone||$('#p_phone').value.trim();L.source=L.source||'Partner';L.ref=L.ref||refNo();saveLead(L);flag('gm_docs','1')} 303 $('#pOut').innerHTML=`<p class="kicker">Partner pack</p><b class="big">Thank you, ${esc(($('#p_name').value||'').trim().split(' ')[0])}</b><p>Your partner pack is below: the mutual NDA (for your counsel), the partner enquiry checklist and the programme summary for your country. Our partner desk has your details and will call you within two working days.</p><p><a class="btn sm" href="files/GridMats_Partner_NDA.pdf" target="_blank" rel="noopener">NDA (PDF)</a> <a class="btn sm" href="files/GridMats_Partner_Checklist.pdf" target="_blank" rel="noopener">Checklist (PDF)</a> ${/india/i.test($('#p_country').value)?'<a class="btn sm" href="files/GridMats_Partner_Programme.pdf" target="_blank" rel="noopener">India programme (PDF)</a>':'<a class="btn sm" href="files/GridMats_International_Partner_Programme.pdf" target="_blank" rel="noopener">International programme (PDF)</a>'}</p>`; 304 const payload={Last_Name:$('#p_name').value,Company:$('#p_co').value,Email:$('#p_email').value,Phone:$('#p_phone').value,Country_City:$('#p_country').value,Partner_Model:$('#p_model').value,Sector:$('#p_sector').value,Pipeline:$('#p_pipe').value,Lead_Source:'Partner',Send_Pack:true,Copy_To:'[email protected]'}; 305 postLead('partner',payload);const p=$('#pPayload');p.hidden=true;p.textContent='Prototype: on the live site the Wix form âChannel partner enquiryâ saves these fields, a Wix automation emails the three PDFs to the partner with a copy to [email protected], and the lead goes to Zoho with Lead_Source = Partner.\n\n'+JSON.stringify(payload,null,1);})} 306function pageOrder(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Order and pay</div><h1 style="margin-top:8px">Order and pay</h1><p class="lede">Project orders go through five steps, all on one reference. Check a quote or pay an invoice here.</p> 307<div class="grid g2" style="margin-top:16px;align-items:start"><div class="card"><h3>How a project order works</h3><ol style="padding-left:18px;margin:6px 0"><li><b>Free estimate and design.</b> An indicative price on screen now; our engineers then send the design and the bill of quantities.</li><li><b>Formal quote.</b> A GridMats quote by email, priced by order size, ex-works, GST 18% extra, transport at cost.</li><li><b>Your purchase order.</b> Send it to [email protected] with your GSTIN and the delivery address; we confirm the supply date.</li><li><b>Advance invoice with a Pay button.</b> Pay on the secure payment page by UPI, card or net banking, or by NEFT/RTGS to the account printed on the invoice.</li><li><b>Dispatch and training.</b> A GST tax invoice in your company's name. We train your contractor's execution team and give our SOP and installation guide: for orders of 2,000 m² or more, our trainer comes on site for up to 3 days, once you confirm in writing that the site is ready and your execution team is available, and demonstrates about 100 m² of installation to the project agreement and the SOP; smaller orders are trained online at no extra cost. On-site training is built into the product rate on your quote, so there is one PO with no separate service order; online training is at no extra cost.</li></ol><p class="small">Terms: 100% advance with the order, GST 18% extra, transport at cost. Unloading at site is by the customer. On-site training is built into the product rate: one PO. Defect liability: 1 year (DLP), our standard practice. After the training visit, your team shares project status updates (photographs, test reports, and any roadblocks or challenges) at each hold point and at the intervals set in the project agreement; the DLP applies only when these updates have been shared.</p></div> 308<form id="of" class="form" onsubmit="return false"><h3 class="w" style="margin:0">Pay an invoice or check a quote</h3><label class="w">Quote, order or invoice number<input id="o_num" placeholder="for example QTN-210400 or INV-GR-26-27-005" autocomplete="off"></label><label class="w">The email on it, or its total in â¹<input id="o_proof" placeholder="[email protected] or 1357000" autocomplete="off"></label><input id="o_hp" tabindex="-1" autocomplete="off" aria-hidden="true" style="position:absolute;
308left:-9999px;width:1px;height:1px"><div class="w" style="display:flex;gap:8px;flex-wrap:wrap;align-items:center"><button class="btn solid" id="o_go">Find it</button><span class="small" role="alert" id="o_err"></span></div><div class="w result" id="oOut" hidden></div></form></div> 309<div class="card" style="margin-top:16px"><h3>Paying by bank transfer</h3><p class="small">Use only the account printed on your GridMats invoice. We never change our bank details by email or WhatsApp. If a message asks you to pay a different account, call +91 63626 GMATS (46287) before you pay.</p></div></div></section>${enquiryBand()}`} 310function bindOrder(){const go=$('#o_go');if(!go)return;go.addEventListener('click',()=>{const num=($('#o_num').value||'').trim().toUpperCase();const proof=($('#o_proof').value||'').trim();const out=$('#oOut'); 311 const numMsg=/^[A-Z0-9][A-Z0-9\-\/]{2,39}$/.test(num)?'':'Enter the number as printed on the document.'; 312 const proofMsg=!proof?'Enter the email on the document, or its total.':(proof.includes('@')?vEmail(proof):(/^[â¹\s]*[\d,]+(\.\d{1,2})?$/.test(proof)?'':'Enter an email address or an amount such as 1357000.')); 313 if(checkFields([[$('#o_num'),numMsg],[$('#o_proof'),proofMsg]])){$('#o_err').textContent='Please correct the fields marked below.';return} 314 $('#o_err').textContent='Looking it upâ¦';go.disabled=true;out.hidden=true; 315 const money=v=>'â¹'+Number(v||0).toLocaleString('en-IN',{maximumFractionDigits:2}); 316 const show=h=>{go.disabled=false;$('#o_err').textContent='';out.hidden=false;out.innerHTML=h}; 317 const ask=typeof postNow==='function'?postNow('order',{number:num,proof,website_url:$('#o_hp').value}):Promise.resolve({status:0,j:null}); 318 ask.then(({status,j})=>{ 319 if(status===200&&j&&j.ok&&j.doc){const d=j.doc;const when=d.due?(d.type==='Quote'?' · valid until '+esc(d.due):' · due '+esc(d.due)):'';const label=d.pay?'View and pay':(d.type==='Quote'?'View the quote':'View the document'); 320 show(`<p class="kicker">${esc(d.type)} ${esc(d.number)}</p><b class="big">${esc(d.statusText)}</b><p>${d.date?'Dated '+esc(d.date)+' · ':''}total ${money(d.total)}${d.balance!==null&&d.balance!==undefined&&d.type!=='Quote'&&d.type!=='Sales order'?' · balance '+money(d.balance):''}${when}</p>${d.link?`<p><a class="btn solid" href="${esc(d.link)}" target="_blank" rel="noopener">${label}</a></p>`:''}<p class="small">${d.type==='Quote'?'To go ahead, reply to the quote email with your purchase order.':d.pay?'The secure page takes UPI, cards and net banking. For NEFT/RTGS use the account printed on the invoice.':''}</p>`)} 321 else if(status===404)show(`<p class="kicker">Not found</p><p>We couldn't match that number with the email or total. Check both against the document, or write to [email protected].</p>`); 322 else if(status===429)show(`<p class="kicker">Please wait a few minutes</p><p>Too many look-ups from this connection. Try again shortly, or call +91 63626 GMATS (46287).</p>`); 323 else if(status===0)show(`<p class="kicker">Preview</p><p>On the live site this finds your quote or invoice in our billing system.</p>`); 324 else show(`<p class="kicker">Please try again shortly</p><p>We could not reach our billing system just now. Call +91 63626 GMATS (46287) or write to [email protected].</p>`) 325 }).catch(()=>show(`<p class="kicker">Please try again shortly</p><p>We could not reach our billing system just now. Call +91 63626 GMATS (46287) or write to [email protected].</p>`))})} 326function legalPage(crumb,title,intro,body){return `<section class="block"><div class="wrap" style="max-width:820px"><div class="crumb"><a href="#home">Home</a> ⺠${crumb}</div><h1 style="margin-top:8px">${title}</h1><p class="small">Last updated 27 September 2026 · GroundReality Enterprises Pvt. Ltd. (GridMats®), Bengaluru, India</p><p class="lede" style="margin-top:10px">${intro}</p><div class="post legal">${body}</div><p class="small" style="margin-top:26px">Questions about this page: [email protected]. See also our <a href="#privacy">Privacy Policy</a>, <a href="#terms">Terms and Conditions</a>, <a href="#cookies">Cookie Policy</a> and <a href="#security">Security</a> page.</p></div></section>`} 327function pagePrivacy(){return legalPage('Privacy Policy','Privacy Policy','How GridMats collects, uses and protects personal data, and the choices you have. We follow the Digital Personal Data Protection Act, 2023 and the Information Technology Act, 2000 and its rules.',` 328<h2>1. Who we are</h2><p>This website, www.gridmats.com, is run by GroundReality Enterprises Pvt. Ltd. ("GridMats", "we"), Bengaluru, Karnataka, India. We decide how the personal data collected through the website, our forms, chat, WhatsApp and our sales process is used, and we are responsible for it.</p> 329<h2>2. What we collect</h2><ul><li><b>What you give us:</b>
329 name, company, email, mobile or WhatsApp number, city, state and country, and the project details you enter (what you are building, area, vehicles, finish, soil, rainfall, terrain, timelines and notes).</li><li><b>Documents and messages:</b> anything you send us by email, WhatsApp or chat, such as drawings, photographs and soil reports.</li><li><b>Order and pay look-ups:</b> the document number and the email or total you enter. They are used only to find that document and are not kept as a record about you.</li><li><b>Automatically, when you allow it:</b> pages visited, device and browser type, approximate location from your IP address, and how you reached the site, through Google Analytics, Google Tag Manager, Google Ads, Wix Analytics and Zoho SalesIQ (see our <a href="#cookies">Cookie Policy</a>).</li><li><b>Security records:</b> your IP address and the time of a form request, kept briefly to stop spam and abuse.</li></ul> 330<h2>3. Why we use it</h2><ul><li>To answer your enquiry and prepare estimates, designs, quotations and proposals.</li><li>To process orders, invoices, payments and dispatch, to train your contractor's team, and to follow the project, including the status updates that the defect liability period depends on.</li><li>To send you what you asked for, such as data sheets, fliers, partner documents and project updates. Marketing messages go only with your consent, and you can opt out at any time.</li><li>To run, secure and improve the website, including measuring visits and ads when you allow it.</li><li>To meet legal duties such as GST, accounting and records law, and to respond to lawful requests from authorities.</li></ul><p>We process personal data with your consent, or for the legitimate uses the law allows, such as completing an order you asked for or meeting a legal obligation.</p> 331<h2>4. Who we share it with</h2><ul><li><b>Service providers who process it for us:</b> Zoho (CRM, Books and SalesIQ, in its India data centre), Wix (website hosting and Wix Analytics), Google (Analytics, Tag Manager and Ads) and Meta (WhatsApp, when you message us there). Each works under its own terms and security controls.</li><li><b>People who help deliver your project:</b> transport and logistics providers, and an authorised GridMats channel partner for your region when you have agreed to it.</li><li><b>Authorities, advisers and successors:</b> when the law requires it, our professional advisers under confidentiality, or a buyer of the business.</li></ul><p>We do not sell personal data.</p> 332<h2>5. Transfers outside India</h2><p>Some providers, such as Google and Wix, may process data outside India. We allow this only as Indian law permits, and only with providers that protect data to recognised standards.</p> 333<h2>6. How long we keep it</h2><p>We keep enquiry and customer records while we need them for the purposes above, and for as long as tax, company and accounting laws require (for example, books of account for eight years). Marketing data is kept until you withdraw consent. Analytics data is kept for the period set in our Google Analytics account, at most 14 months; Wix Analytics keeps site statistics under Wix's own terms. Security records are deleted within days.</p> 334<h2>7. Your rights</h2><p>You can ask us:</p><ul><li>what personal data we hold about you and how we use it;</li><li>to correct, complete or update it;</li><li>to erase it, where the law does not require us to keep it;</li><li>to withdraw your consent (this does not affect what was done before);</li><li>to nominate someone to act for you.</li></ul><p>Write to [email protected]. We will respond within the time the law allows. If you are not satisfied with our answer, you may approach the Data Protection Board of India.</p> 335<h2>8. Children</h2><p>This website is meant for businesses and professionals. We do not knowingly collect the personal data of anyone under 18.</p> 336<h2>9. Security</h2><p>We protect personal data with reasonable security practices: encrypted connections (HTTPS), keys held only on our servers, limited access, and spam and abuse protection. See our <a href="#security">Security</a> page. No system is completely secure. If a breach affects your data, we will inform you and the authorities as the law requires.</p> 337<h2>10. Grievance Officer</h2><p>For any question, concern or grievance about your personal data, contact the Grievance Officer, GroundReality Enterprises Pvt. Ltd., Bengaluru, Karnataka, India, at [email protected].</p> 338<h2>11. Changes</h2><p>We may update this policy. The date at the top shows the current version.</p>`)} 339function pageTerms(){return legalPage('Terms and Conditions','Terms and Conditions','The terms for using this website (Part A) and the standard terms on which GridMats supplies products and services (Part B). A signed quotation, purchase order or project agreement takes precedence over Part B.',` 340<h2>Part A · Using this website</h2> 341<h3>A1. Acceptance</h3><p>By using www.gridmats.com you agree to these terms. If you do not agree, please do not use the site.</p> 342<h3>A2. Information, estimates and figures</h3><p>The content is general information. First-cut estimates, installed-cost ranges, the system finder and example designs are indicative only: they are not offers, and they are not a design for your site. Test results are laboratory results under the stated conditions; a pavement's capacity comes from a design for its traffic and soil. Designs, prices and dates bind GridMats only in a written quotation or agreement.</p> 343<h3>A3. Intellectual property</h3><p>GridMats®, the logo, the system names, and the text, drawings, photographs, videos and documents on this site belong to GroundReality Enterprises Pvt. Ltd. or its licensors. The GridMats grid is protected by Indian Patent 398992. You may view and download documents to evaluate GridMats for a project. You may not copy, change or republish them for any other purpose without our written permission.</p> 344<h3>A4. Acceptable use</h3><p>Do not misuse the site. For example, do not send false details or someone else's details through the forms, send spam, try to break into or overload the site, copy it in bulk by automated means, or use it to break the law. We may block access that we believe is abusive.</p> 345<h3>A5. Links</h3><p>Links to other sites, such as news, social media and video, are for convenience. We are not responsible for their content or practices.</p> 346<h3>A6. Liability</h3><p>The site is provided "as is". As far as the law allows, GridMats is not liable for any loss arising from use of the site or reliance on its general information. Nothing in these terms limits a liability that the law does not allow to be limited.</p> 347<h3>A7. Privacy</h3><p>Our <a href="#privacy">Privacy Policy</a> and <a href="#cookies">Cookie Policy</a> explain how we handle personal data.</p> 348<h2>Part B · Standard terms of supply</h2> 349<h3>B1. Quotations and orders</h3><p>Every supply is made against a written GridMats quotation and your purchase order. A quotation is valid until the date stated on it. The quotation, the purchase order and any project agreement set out the products, quantities, prices and specific terms, and they prevail over this Part B.</p> 350<h3>B2. Prices and payment</h3><p>Prices are as stated on the quotation (in Indian rupees for supplies in India), ex-works. GST (currently 18%) is extra, and freight is charged at cost unless the quotation says otherwise. Payment is 100% in advance with the purchase order, unless the quotation says otherwise. Pay only into the bank account printed on the GridMats invoice or, where offered, through the secure payment link on the invoice. We never change our bank details by email or WhatsApp.</p> 351<h3>B3. Training</h3><p>We train your contractor's execution team and give our SOP and installation guide.</p><ul><li>For orders of 2,000 m² or more, one GridMats trainer comes to site for up to 3 days, once you confirm in writing that the site is ready and the execution team is available. The trainer demonstrates about 100 m² of installation to the project agreement and the SOP.</li><li>Smaller orders are trained online, at no extra cost.</li><li>On-site training is built into the product rate: one purchase order, and n
351o separate service order.</li><li>After the training, your contractor's trained supervisor releases each hold point and sends photographs to our engineer.</li></ul> 352<h3>B4. Delivery</h3><p>The dispatch date is confirmed with your order. Unloading at site is by the customer. Please check the delivery on arrival and report any shortage or transit damage promptly, with photographs, so that we can resolve it.</p> 353<h3>B5. Installation</h3><p>Installation is by your contractor, to the GridMats SOP, the installation guide and the design for your site. Base preparation, drainage, compaction, infill and curing are part of the works, not of the product.</p> 354<h3>B6. Defect liability</h3><p>GridMats gives a defect liability period (DLP) of 1 year from handover, our standard practice. It covers manufacturing defects in the GridMats products supplied. We give no other warranty.</p><p>The DLP applies only when your team has shared project status updates with us systematically: photographs, test reports, and any roadblocks or challenges, at each hold point and at the intervals set in the project agreement.</p><p>The DLP does not cover:</p><ul><li>installation that departs from the SOP or the design;</li><li>failure of the base, subgrade or drainage;</li><li>loads or uses beyond the design;</li><li>damage by others;</li><li>normal wear.</li></ul> 355<h3>B7. Limitation of liability</h3><p>As far as the law allows, GridMats' total liability under an order is limited to the price paid for the products under that order, and GridMats is not liable for indirect or consequential loss, such as loss of profit, production or use.</p> 356<h3>B8. Force majeure</h3><p>Neither party is liable for delay or failure caused by events beyond its reasonable control, such as natural disasters, epidemics, government action, strikes, transport disruption and vessel delays.</p> 357<h3>B9. Law and courts</h3><p>These terms are governed by the laws of India. The courts at Bengaluru, Karnataka have exclusive jurisdiction.</p>`)} 358function pageCookies(){return legalPage('Cookie Policy','Cookie Policy','Which cookies and browser storage gridmats.com uses, and how you choose. On your first visit, a banner asks you to accept or refuse the ones that are not necessary. You can change your choice at any time with "Cookie settings" at the foot of every page.',` 359<h2>1. Necessary (always on)</h2><ul><li><b>Your estimate in progress:</b> the answers and contact details you enter are kept in your own browser, so the free estimate keeps its steps as you move between pages. A form waiting to be sent is also kept there if your connection drops, and removed once it reaches us. You can clear it by clearing this site's data in your browser.</li><li><b>Your cookie choice:</b> kept in your browser, so we don't ask again.</li><li><b>Hosting:</b> our website host, Wix, sets short technical cookies that help deliver pages and forms securely (sec-fetch-unsupported, server-session-bind and client-session-bind, and on the blog pages a visitor session, wixSession). They end when you close your browser.</li></ul> 360<h2>2. Analytics (only if you accept)</h2><p><b>Google Analytics 4</b> and <b>Google Tag Manager</b> measure visits, pages and sources so we can improve the site. Cookies: _ga and _ga_*, for up to 2 years. If you refuse, Google receives only cookieless signals, under Google Consent Mode.</p><p><b>Wix Analytics</b>, from our website host, counts visits and pages for our Wix dashboard. Cookies: wixSession (a visitor session, up to 180 days) and bSession (the current visit, 30 minutes). If you refuse, it does not run.</p> 361<h2>3. Advertising (only if you accept)</h2><p><b>Google Ads</b> measures which ads lead to enquiries and shows GridMats ads to past visitors. Its cookies (such as _gcl_au, and cookies on doubleclick.net) are set by Google, for up to about 13 months. You can also manage Google ads at adssettings.google.com.</p> 362<h2>4. Chat and visitor recognition (only if you accept)</h2><p><b>Zoho SalesIQ</b> runs our website chat and recognises returning visitors. If you then send us a form, it links your visit to your enquiry. Its cookies are set by Zoho.</p> 363<h2>5. Your choices</h2><p>Choose "Accept all" or "Only necessary" in the banner, and change it at any time with "Cookie settings" at the foot of every page. You can also delete or block cookies in your browser settings. The website works either way; only the chat needs your acceptance.</p> 364<h2>6. More information</h2><p>See our <a href="#privacy">Privacy Policy</a> for how we use personal data and for your rights.</p>`)} 365function pageSecurity(){return legalPage('Security','Security','How we protect this website, your data and your payments, and how to report a security problem.',` 366<h2>1. How the website is protected</h2><ul><li><b>Encrypted connections:</b> every page and form uses HTTPS, and browsers are told to use HTTPS only (HSTS).</li><li><b>Keys stay on the server:</b> the forms send data to the site's own server code, which writes to our business systems. The access keys are held only on the server and never appear in a web page.</li><li><b>Only what we need:</b> the forms ask only for what we need to answer you, and personal data is never put in web addresses.</li><li><b>Spam and abuse protection:</b> every form is checked again on our server, and repeated requests from one address are limited.</li><li><b>Browser protections:</b> a content security policy blocks plug-ins and insecure content, and a strict referrer policy is applied.</li></ul> 367<h2>2. Payments and bank details</h2><ul><li>We never ask for card details or bank log-ins on this website, or by email, phone or WhatsApp.</li><li>Where online payment is offered, it is made only on the secure payment page linked from your GridMats invoice.</li><li>Pay only into the bank account printed on the GridMats invoice. We never change our bank details by email or WhatsApp. If a message asks you to pay into a different account, call +91 63626 46287 before you pay.</li></ul> 368<h2>3. Look out for impersonation</h2><p>Our team writes from @gridmats.com and @groundreality.org addresses, and our quotes and invoices come through Zoho Books. If a message in our name looks wrong, such as an urgent payment request, new bank details or an unexpected attachment, do not act on it. Forward it to [email protected].</p> 369<h2>4. How we handle data inside GridMats</h2><ul><li>Keys for our business systems are held on servers, never in documents, email or chat.</li><li>Access to customer data is limited to the people who need it for your project.</li><li>Personal data is handled as our <a href="#privacy">Privacy Policy</a> sets out.</li></ul> 370<h2>5. Reporting a vulnerability</h2><p>If you find a security problem on www.gridmats.com, email [email protected] with the details and the steps to reproduce it. We will acknowledge your report and keep you informed. Please give us reasonable time to fix it before you disclose it. Do not access other people's data, disrupt the service or use social engineering. We will not take action against good-faith research that follows these rules. Our contact for researchers is also published at /.well-known/security.txt.</p>`)}
371function pageAccessibility(){return legalPage('Accessibility','Accessibility','We want everyone to be able to use gridmats.com: people who use a screen reader, magnification, voice control or only a keyboard; people with low vision, colour blindness or hearing loss; and anyone who reads English as a second language.',` 372<h2>1. Our standard</h2><p>We aim to meet the Web Content Accessibility Guidelines (WCAG) 2.2 at level AA, the international standard that India's accessibility guidelines also build on.</p> 373<h2>2. What we have done</h2><ul><li>Every page works with a keyboard, with a visible focus outline and a "Skip to main content" link.</li><li>Pages use proper headings and landmarks, so screen readers can move around them.</li><li>Text and buttons meet the WCAG colour-contrast levels, and links are not shown by colour alone.</li><li>Images have text descriptions, and the six steps of the gravel-road film are written out beside it.</li><li>Every form field has a label; errors are announced and explained in words, not colour.</li><li>Pages reflow to fit small screens and high zoom without scrolling sideways.</li><li>If your device asks for reduced motion, the site does not animate and the film does not start by itself.</li><li>We write in plain English, and <a href="#glossary">Terms we use</a> explains the engineering words.</li><li>Your browser's built-in translation works on every page.</li></ul> 374<h2>3. Known limits</h2><ul><li>Some PDF documents (data sheets, drawings and test reports) may not read well with a screen reader. Ask us and we will send the content in another format.</li><li>The website chat (Zoho SalesIQ) and WhatsApp are run by other companies, and their accessibility is outside our control. You can always call or email us instead.</li></ul> 375<h2>4. How we check</h2><p>We run automated accessibility checks (axe) on every page, at desktop and phone sizes, in light and dark mode, and check keyboard use by hand. Last checked 27 September 2026.</p> 376<h2>5. Need something in another format?</h2><p>Call +91 63626 46287, WhatsApp +91 63626 46287 or +91 81476 84653, or email [email protected]. We can send information as plain text or in larger print, or talk you through it, including your free estimate, on a call.</p> 377<h2>6. Tell us about a problem</h2><p>If something on the site is hard to use, email [email protected] with the page and what went wrong. We will reply and fix what we can.</p>`)} 378function pageGlossary(){const T=[ 379 ['Base','The compacted layer of crushed stone under the surface. It spreads the load of the wheels to the ground. The GridMats grid sits on the base.'], 380 ['CBR (California Bearing Ratio)','A test of how strong the ground is. A higher CBR means firmer ground, which needs a thinner base.'], 381 ['Cell confinement','The grid\'s cells hold the infill in place, so it cannot spread sideways under wheels. This is what lets loose stone or gravel behave like a firm surface.'], 382 ['Cement-treated gravel (S1)','Stone chips mixed with a little cement, filled into the grid and compacted. It sets into a hard surface with no saw-cut joints.'], 383 ['Compaction','Pressing a layer with a roller or plate compactor so that it becomes dense and strong.'], 384 ['Cube test','Small cubes of a cement mix are made on site and crushed in a laboratory after 7 or 28 days to check their strength. An S1 surface opens to trucks once its 7-day cubes reach 2 MPa.'], 385 ['DLP (defect liability period)','The period after handover in which GridMats deals with manufacturing defects in the products it supplied: 1 year, on the conditions in our <a href="#terms">Terms and Conditions</a>.'], 386 ['Ex-works, ex-GST, ex-freight','A price at our factory, before GST is added and before transport.'], 387 ['FOB (free on board)','An export price that includes delivery onto the ship at the named Indian port.'], 388 ['GreenPro','The Confederation of Indian Industry\'s (CII) certification for green products.'], 389 ['Gross vehicle weight','The total weight of a loaded vehicle. We describe trucks this way, for example "up to 49 t gross"; the pavement itself is designed from the axle loads.'], 390 ['GSB (granular sub-base)','A layer of graded crushed stone or gravel laid on the prepared ground, below the base.'], 391 ['Hold point','A stage of the work where the next step waits until the last one has been checked and released.'], 392 ['Infill','What fills the grid\'s cells: stone chips, gravel, soil and grass, or concrete.'], 393 ['Installed cost','The cost of the finished surface per sq ft or m²: the grid, the base, the infill and the labour. It depends on the site, so it is designed for each site.'], 394 ['IRC (Indian Roads Congress)','The body that publishes India\'s road design codes.'],
395 ['kg COâe','Kilograms of carbon dioxide equivalent: all the greenhouse gases a product causes, counted as if they were carbon dioxide.'], 396 ['Lab load test (t/m²)','A panel is pressed in a laboratory until it fails, and the load is given in tonnes per square metre. It compares panels; the capacity of a finished road comes from its design for the traffic and the ground.'], 397 ['LCA (life-cycle assessment)','A count of the greenhouse gases a product causes over its life, in kg COâe per m².'], 398 ['m² and sq ft','Square metres and square feet: 1 m² = 10.764 sq ft. We show prices per sq ft first, with the price per m² in brackets.'], 399 ['M25 concrete','Concrete with a strength of 25 MPa at 28 days.'], 400 ['Modulus improvement factor','How much stiffer a layer of stone becomes with the grid than without it, measured in a laboratory.'], 401 ['MPa (megapascal)','A unit of strength or pressure. 1 MPa is about 10 kg on each square centimetre.'], 402 ['Permeable','Lets rainwater soak through the surface into the ground instead of running off.'], 403 ['PO (purchase order)','The buyer\'s order. With GridMats, on-site training is built into the product rate, so there is one PO.'], 404 ['SOP (standard operating procedure)','Our step-by-step installation method, which we train your contractor\'s team to follow.'], 405 ['Subgrade','The natural ground under all the layers of a road or yard.'], 406 ['VDF (vehicle damage factor)','A number that turns the real mix of vehicles into standard axle loads, so a pavement can be designed for its traffic.'], 407 ['WMM (wet mix macadam)','A base layer of graded crushed stone mixed with water, laid and compacted.']]; 408 return `<section class="block"><div class="wrap" style="max-width:820px"><div class="crumb"><a href="#home">Home</a> ⺠<a href="#engineering">Resources</a> ⺠Terms we use</div><h1 style="margin-top:8px">Terms we use</h1><p class="lede" style="margin-top:10px">The engineering and trade words on this site, in plain English, from A to Z. If a word you need is missing, ask us: [email protected].</p><dl class="gloss">${T.map(([t,d])=>`<dt>${t}</dt><dd>${d}</dd>`).join('')}</dl></div></section>`} 409function pageContact(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Contact</div><h1 style="margin-top:8px">Contact</h1><div class="grid g2" style="margin-top:16px"><div class="card"><h3>GroundReality Enterprises Pvt. Ltd.</h3><p>Bengaluru, Karnataka, India<br>[email protected] · <a href="tel:+916362646287" title="+91 63626 46287">+91 63626 GMATS</a> (46287)<br>WhatsApp <a href="https://wa.me/916362646287" target="_blank" rel="noopener">+91 63626 46287</a> · <a href="https://wa.me/918147684653" target="_blank" rel="noopener">+91 81476 84653</a></p><p><a class="btn solid" href="#enquiry">${CTA}</a> <a class="btn" href="#order">Order and pay</a> <a class="btn" href="#partners">Partner enquiry</a></p></div><div class="card"><h3>International</h3><p>Channel partners in Nigeria, Romania, Canada, the USA and Mauritius; new partners through the partner enquiry.</p>${worldMap()}</div></div><h2 style="margin-top:28px">Offices</h2><div class="grid g4" style="margin-top:10px">${OFFICES.map(o=>`<div class="card"><b style="font-family:var(--display)">${o.city}</b><br><span class="small">${o.what}</span><p style="margin-top:6px">${o.mail}${o.phone?`<br><a href="tel:${o.tel}">${o.phone}</a>`:''}${o.extra?`<br>${o.extra}`:''}</p></div>`).join('')}</div></div></section>`} 410// ---- round 7: prices per sq ft alongside per m² (1 m² = 10.7639 sq ft) ---- 411const SQFT=10.7639; 412const inrN=v=>Math.round(v).toLocaleString('en-IN'); 413const psf=v=>inrN(v/SQFT); 414const sqftArea=a=>{const f=a*SQFT;return f>=1e5?(f/1e5).toFixed(2).replace(/\.?0+$/,'')+' lakh sq ft':inrN(f)+' sq ft'}; 415const toM2=(v,u)=>u==='sqft'?Math.round(v/SQFT):v; 416// every â¹â¦/m², â¹â¦ / m² and â¹â¦ per m² in page text gains its â¹ per sq ft first; the m² figure stays in brackets 417function addSqft(h){return String(h).replace(/(?<![(\d,])â¹([\d,]+)(?:â([\d,]+))?( \/ |\/| per )m²/g,(m,a,b,sep)=>{const A=+a.replace(/,/g,''),B=b?+b.replace(/,/g,''):0;const u=sep===' per '?' per sq ft':sep===' / '?' / sq ft':'/sq ft';return `â¹${psf(A)}${B?'â'+psf(B):''}${u} (${m})`})} 418// ---- first-cut calculator ---- 419const RANGE={S1:[1400,1900],S2:[1400,1900],S3:[1350,1800]}; 420function firstCut(i){ 421 if(i.finish==='temporary'){const A=+i.area||1000,T=A<1000?0:A<2500?1:A<5000?2:A<=25000?3:4,P=[2200,2100,2050,2000,1950]; 422 return {rec:'S6',alt:['S2'],prod:`TC mats â¹${psf(P[T])}
422/sq ft (â¹${P[T].toLocaleString('en-IN')}/m²) for ${A.toLocaleString('en-IN')} m² (${sqftArea(A)}); â¹${psf(1950)}â${psf(2200)}/sq ft by order size`,open:'the same day; lifted and reused after the job',range:'ground levelling only; no base, infill or concrete',total:'',esg:'mats reused site after site; no concrete or aggregate left behind',cls:{ped:'A',car:'B',lcv:'C',fire:'C',t2:'C',t3:'D',mav:'D',rtg:'E'}[i.veh]};} 423 const cls={ped:'A',car:'B',lcv:'C',fire:'C',t2:'C',t3:'D',mav:'D',rtg:'E'}[i.veh]; 424 let rec='S1',alt=[];const heavy=['C','D','E'].includes(cls)&&i.veh!=='fire'; 425 if(i.finish==='green'&&!heavy)rec='S3';else if(i.finish==='stone'&&cls!=='E'&&i.terrain!=='emb')rec='S2';else if(i.finish==='concrete')rec='S4';else if(i.finish==='asphalt')rec='S5';else if(i.finish==='any'){rec=heavy?'S1':(i.perm==='yes'?'S2':'S1')} 426 alt=['S1','S2','S3'].filter(c=>c!==rec&&!(c==='S3'&&heavy)&&!(c==='S2'&&i.terrain==='emb')); 427 const A0=+i.area||1000,T=A0<1000?0:A0<2500?1:A0<5000?2:A0<=25000?3:4; 428 const LAD={hd:['OC-HD 40',[1150,990,960,935,900]],lw:['OC-LW 40',[690,650,620,590,550]],gp:['Grass paver 30 mm',[495,470,455,440,430]]}; 429 const pk=rec==='S3'?'gp':rec==='S5'?(['D','E'].includes(cls)?'hd':'lw'):(['A','B'].includes(cls)&&rec!=='S1'&&rec!=='S4')?'lw':'hd';const L=LAD[pk]; 430 const prod=`${L[0]} â¹${psf(L[1][T])}/sq ft (â¹${L[1][T].toLocaleString('en-IN')}/m²) for ${A0.toLocaleString('en-IN')} m² (${sqftArea(A0)}); â¹${psf(L[1][4])}â${psf(L[1][0])}/sq ft by order size`; 431 const open={S1:'light vehicles at 3 days, trucks at 7 once the 7-day cubes reach 2 MPa',S2:'the same day',S3:'foot traffic at once, vehicles in 4â6 weeks',S4:'24 h light, full load at 28 days',S5:"your contractor's schedule"}[rec]; 432 const r=RANGE[rec];const A=+i.area||1000; 433 const rainM3=Math.round(0.9*({low:500,mod:1000,high:2000,vhigh:3000}[i.rain]||1000)/1000*A),plast=((pk==='lw'?4:6.6)*A/1000).toFixed(1); 434 const esg=rec==='S3'?`${(3*A/1000).toFixed(1)} t of plastic waste reused; ${rainM3} m³ of rain a year infiltrated`:rec==='S2'?`${plast} t of plastic waste reused; ${rainM3} m³ of rain a year returned to the ground`:rec==='S4'?`${plast} t of plastic waste reused; about ${Math.round(68.3*A/1000)} t COâe less than a conventional concrete road (LCA by Smarter Dharma: 23.8 against 92.1 kg per m²)`:`${plast} t of plastic waste reused`; 435 return {rec,alt,pk,prod,open,range:r?`â¹${psf(r[0])}â${psf(r[1])} per sq ft (â¹${r[0].toLocaleString('en-IN')}â${r[1].toLocaleString('en-IN')} per m²) indicative`:(rec==='S4'?'on request, priced per site':'design-specific'),total:r?`â¹${Math.round(r[0]*A/1e5)}â${Math.round(r[1]*A/1e5)} lakh for ${A.toLocaleString('en-IN')} m² (${sqftArea(A)})`:'',esg,cls}; 436} 437// ---- round 4: media, videos, social, lead capture data ---- 438const SOCIAL=[['LinkedIn','https://www.linkedin.com/company/gridmats/'],['YouTube','https://www.youtube.com/@GridMats'],['Instagram','https://www.instagram.com/gridmats1/'],['Facebook','https://www.facebook.com/profile.php?id=61594785001162'],['X','https://x.com/GridMats']]; 439const WA_NUM='916362646287'; 440const NEED=['Area: length à width, or m²','Location: city or a map pin','Heaviest vehicle and vehicles a day','Soil CBR if you have it, or the soil type','The finish you want','A site photo or layout drawing']; 441const CTA='Get my free estimate'; 442const PRESS_MARKS=['The Hindu','Business Standard','The Financial Express','The New Indian Express','Deccan Herald','The Better India','YourStory','The Times of India','The Economic Times','India Today','Shark Tank India','Godrej Design Lab','TEDx']; 443const PODCAST={t:'How can India build roads that last?',s:'Godrej Design Lab à The Gyaan Project · Engineering the Everyday · 68 min · 11 Sep 2026',u:'https://www.youtube.com/watch?v=Rif8SZ5BG50',i:'img/yt_gdl_podcast.webp'}; 444const GRAVEL_VIDEO={src:'https://video.wixstatic.com/video/2a6e23_fe039cbe99fd468a89b5d4860257161b/720p/mp4/file.mp4',poster:'img/gravel_video_poster.webp',chapters:[[0,'Compact the existing soil','A roller consolidates the natural ground'],[6,'L
444ay the separation layer','125 GSM geotextile over the compacted soil'],[16,'Spread the bedding','A levelled layer of M-sand'],[21,'Lay the GridMats panels','30 mm grid panels of recycled plastic, clipped together'],[31,'Fill and compact','Gravel into the cells, a plate compactor, then the roller'],[43.5,'Open to vehicles','Traffic runs on it as soon as it is compacted'],[63.5,'Before and after','The same track: dirt to gravel road']]}; 445const VIDEOS=[ 446 {t:'Shark Tank India S3: the GridMats pitch',s:'Full pitch · Shark Tank India',u:'https://www.youtube.com/watch?v=aGpApSSIPFM',i:'img/yt_shark_prathap.webp',tag:'On TV'}, 447 {t:'How GridMats panels are made',s:'1 min · GridMats on YouTube',u:'https://www.youtube.com/watch?v=sFEV2qmtd3Q',i:'img/yt_manufacturing.jpg',tag:'Manufacturing',on:['systems','engineering']}, 448 {t:'GridMats research and applications',s:'1.5 min · GridMats on YouTube',u:'https://www.youtube.com/watch?v=dmZAFYQAsms',i:'img/yt_research.jpg',tag:'Research',on:['engineering']}, 449 {t:'The India Advantage Summit, Bengaluru',s:'Talk by Dr Prathap B Rao · TIA Summit',u:'https://www.youtube.com/watch?v=gKl7_AOo5MQ',i:'img/yt_tia.jpg',tag:'Talk'} 450]; 451const SHORTS=[ 452 {t:'Recycled plastic roads that donât need repair',c:'GridMats',d:'1:36',u:'https://www.youtube.com/shorts/B6-y6UiGCXA',i:'img/sh_bg2.jpg',on:['systems','s2','s1']}, 453 {t:'1 lakh m² built: from research to road standards',c:'GridMats',d:'1:33',u:'https://www.youtube.com/shorts/vCZYMRVnVu8',i:'img/sh_bg1.jpg',on:['engineering','projects']}, 454 {t:'Smart roads: IoT sensors inside the pavement',c:'GridMats',d:'1:49',u:'https://www.youtube.com/shorts/BsAc8g6Sr60',i:'img/sh_bg3.jpg',on:['iot']}, 455 {t:'Solar footpaths, green walls and cooler cities',c:'GridMats',d:'1:41',u:'https://www.youtube.com/shorts/KL5M_LzVPdI',i:'img/sh_bg2.jpg',on:['solar','coolwall']}, 456 {t:'Why I started PotHoleRaja',c:'GridMats',d:'1:57',u:'https://www.youtube.com/shorts/2S1RAZl55U4',i:'img/sh_bg1.jpg',on:['about']}, 457 {t:'Can we make roads more sustainable by design?',c:'Godrej Design Lab',d:'',u:'https://www.youtube.com/shorts/ie8f8qJ-STk',i:'img/sh_bg3.jpg'}, 458 {t:'Could plastic build better roads?',c:'Godrej Design Lab',d:'',u:'https://www.youtube.com/shorts/Si7hUkj5xSs',i:'img/sh_bg2.jpg'}, 459 {t:'Engineering the Everyday, clip 1',c:'The Gyaan Project',d:'',u:'https://www.youtube.com/shorts/oWTqZzPJACc',i:'img/sh_bg1.jpg'}, 460 {t:'Engineering the Everyday, clip 2',c:'The Gyaan Project',d:'',u:'https://www.youtube.com/shorts/3IITPZMAiCE',i:'img/sh_bg3.jpg'} 461]; 462const NEWS=[ 463 {y:2026,d:'13 Jan 2026',o:'The Better India',t:'Inside PotHoleRajaâs technology that turns recycled plastic into safer, stronger roads',n:'National Road Safety Week feature on the patented GridMats base.',u:'https://thebetterindia.com/sustainability/potholeraja-recycled-plastic-roads-safe-india-10993756'}, 464 {y:2024,d:'15 May 2024',o:'Autocar India',t:'Hyundai âBe The Better Guyâ with PotHoleRaja',n:'Hyundaiâs road-safety campaign feature on Dr Prathap B Rao and GridMats.',u:'https://www.autocarindia.com/auto-features/branded-content-hyundai-be-the-better-guy-with-potholeraja-431612'}, 465 {y:2023,d:'23 Jun 2023',o:'Homegrown',t:'A civic start-up is on a mission to fix Indian roads using recycled plastic',u:'https://homegrown.co.in/homegrown-voices/a-civic-startup-is-on-a-mission-to-fix-indian-roads-using-recycled-plastic'}, 466 {y:2023,d:'4 Feb 2023',o:'The Financial Express',t:'Fixing Indiaâs pothole problem: what needs to be done',u:'https://www.financialexpress.com/business/express-mobility/fixing-indias-pothole-problem-what-needs-to-be-done/2971285/'}, 467 {y:2022,d:'18 Dec 2022',o:'Khabar Infra',t:'PotHoleRaja embarks on a road-repair mission using plastic waste',u:'https://khabarinfra.com/potholeraja-embarks-on-road-repair-mission-using-plastic-wastes/'}, 468 {y:2022,d:'4 Nov 2022',o:'Surfaces Reporter',t:'Is there a technology to make roads pothole-free? GridMats',u:'https://surfacesreporter.com/articles/134565/is-there-a-technology-to-make-roads-pothole-free-gridmats'}, 469 {y:2022,d:'12 Oct 2022',o:'Business Standard',t:'PotHoleRaja: how one start-up is fixing roads the eco-friendly way',u:'https://www.business-standard.com/article/companies/potholeraja-how-one-start-up-is-fixing-roads-the-eco-friendly-way-122101201051_1.html'}, 470 {y:2022,d:'24 Sep 2022',o:'The New Indian Express',t:'PotHoleRaja: comrades-in-arms for a good cause',u:'https://www.newindianexpress.com/magazine/2022/Sep/24/potholeraja-comrades-in-arms-for-a-good-cause-2500924.html'}, 471 {y:2022,d:'Aug 2022',o:'YourStory',t:'PotHoleRaja uses recycled plastic and tech to make roads safer',u:'https://yourstory.com/socialstory/2022/08/potholeraja-uses-recycled-plastic-tech-make-roads-safer'}, 472 {y:2022,d:'1 Aug 2022',o:'The Better India',t:'PotHoleRaja builds a 25% cheaper road from 3,000 kg of plastic',u:'https://thebetterindia.com/292712/pothole-raja-builds-bengaluru-road-with-recycled-plastic-using-less-water-concrete/'}, 473 {y:2022,d:'31 Jul 2022',o:'Commercial Design India',t:'Bengaluruâs first sustainable road, made with over 3,000 kg of recycled plastic',u:'https://www.commercialdesignindia.com/insights/bengalurus-1st-sustainable-road-made-with-over-3000-kg-of-recycled-plastic'}, 474 {y:2022,d:'2022',o:'Realty+',t:'Brookfield Properties builds Bengaluruâs first sustainable road with recycled plastic',u:'https://rprealtyplus.com/allied/brookfield-properties-builds-bengalurus-1st-sustainable-road-with-recycled-plastic-107144.html'}, 475 {y:2022,d:'18 Jul 2022',o:'Planet Custodian',t:'Bengaluruâs first plastic-waste road, made of 3,000 kg of waste',u:'https://www.planetcustodian.com/bengaluru-plastic-road-made-of-plastic-waste/27278/'}, 476 {y:2022,d:'15 Jul 2022',o:'The Hans India',t:'PotHoleRaja builds road from Ecoworld to ORR using 100% recycled plastic waste',u:'https://www.thehansindia.com/karnataka/potholeraja-builds-road-from-ecoworld-to-orr-using-100-recycled-plastic-waste-753628'}, 477 {y:2022,d:'14 Jul 2022',o:'The Hindu',t:'In Bengaluru, road built with 100% recycled plastic waste between Ecoworld and ORR',u:'https://www.thehindu.com/news/national/karnataka/road-built-with-100-recycled-plastic-waste-between-ecoworld-and-outer-ring-road/article65640244.ece'}, 478 {y:2022,d:'5 May 2022',o:'SocioStory',t:'On a mission to make the world pothole-free, PotHoleRaja has also been saving lives',u:'https://www.sociostory.org/impact-stories/on-a-mission-to-make-the-world-pothole-free-potholeraja-has-also-been-saving-lives-simultaneously'}, 479 {y:2021,d:'23 Nov 2021',o:'Deccan Herald',t:'This Bengaluru group repairs potholes across India',u:'https://www.deccanherald.com/india/karnataka/bengaluru/this-bengaluru-group-repairs-potholes-across-india-1053848.html'} 480]; 481const ORIGINS=[ 482 {d:'3 Aug 2020',o:'The New Indian Express',t:'PotHoleRaja: Bengaluru organisation filling potholes launches a new initiative',u:'https://www.newindianexpress.com/cities/bengaluru/2020/aug/03/potholeraja-bengaluru-based-organisation-aimed-at-filling-up-potholes-launches-new-initiative-2178240.html'}, 483 {d:'20 Jul 2020',o:'Your Philanthropy Story',t:'Pothole Raja',u:'https://www.yourphilanthropystory.in/2020/07/20/pothole-raja/'}, 484 {d:'28 Aug 2019',o:'The Economic Times',t:'When govt fails, citizens get down to work, and succeed',u:'https://economictimes.indiatimes.com/news/politics-and-nation/when-govt-fails-citizens-get-down-to-work-and-succeed/articleshow/70870221.cms'}, 485 {d:'17 Oct 2019',o:'RealtyNXT',t:'RealtyNXT talks exclusively to the founder of PotHoleRaja, Prathap Rao',u:'https://realtynxt.com/proptech-stories/2019-10-17/realtynxt-talks-exclusively-to-the-founder-of-potholeraja-prathap-rao'}, 486 {d:'14 Jun 2019',o:'The Logical Indian',t:'A former Indian Air Force pilot is fixing potholes to make Bengaluruâs roads safer',u:'https://thelogicalindian.com/exclusive/pothole/'}, 487 {d:'15 Dec 2018',o:'Deccan Herald',t:'Whitefield residents fix potholes on their own',u:'https://www.deccanherald.com/city/whitefield-residents-fix-708285.html'}, 488 {d:'Dec 2018',o:'YourStory',t:'Stop blaming, fix potholes yourself: with 4,500 potholes fixed, PotHoleRaja shows how',u:'https://yourstory.com/2018/12/4500-potholes-fixed-potholeraja/'}, 489 {d:'12 Nov 2018',o:'Bangalore Mirror',t:'A Bengalurean speaks the hole truth',u:'https://bangaloremirror.indiatimes.com/bangalore/crime/a-bengalurean-speaks-the-hole-truth/articleshow/66581583.cms'}, 490 {d:'2018',o:'TEDxLavelleRoad',t:'Fixing the world, one pothole at a time',u:'https://www.ted.com/talks/prathap_b_fixing_the_world_one_pothole_at_a_time'}, 491 {d:'28 Oct 2017',o:'India Today',t:'Bengaluru: fed up with potholes, citizens take matters into their own hands',u:'https://www.indiatoday.in/india/story/bengaluru-bbmp-pothole-raja-citizens-road-accidents-1071201-2017-10-28'}, 492 {d:'4 Oct 2017',o:'The Times of India',t:'Pothole Raja steps in when Palike fails',u:'https://timesofindia.indiatimes.com/city/bengaluru/pothole-raja-steps-in-when-palike-fails-bengaluru/articleshow/60935241.cms'}, 493 {d:'23 Sep 2017',o:'Prajavani',t:'ರಸà³à²¤à³ à²à³à²à²¡à²¿ ಮà³à²à³à²à³à²µ ಸà³à²µà²¯à²à²¸à³à²µà³ (volunteers who fill potholes)',u:'http://www.prajavani.net/news/article/2017/09/22/521543.html'}, 494 {d:'7 May 2017',o:'The News Minute',t:'Meet Bengaluruâs PotHoleRaja: he wants to fix the cityâs roads',u:'https://www.thenewsminute.com/article/meet-bengalurus-potholeraja-he-wants-fix-citys-roads-and-needs-your-help-61642'}, 495 {d:'',o:'WION',t:'Bengaluruâs âPothole Rajaâ: a unique initiative by citizens',u:'https://www.youtube.com/watch?v=mbzjYjRI-dM'}, 496 {d:'2016',o:'LinkedIn article',t:'Pothole menace in Bangalore, by Dr Prathap B Rao',u:'https://www.linkedin.com/pulse/pothole-menace-bangalore-prathaap-b-ph-d-'} 497]; 498const TALKS=[ 499 {o:'Godrej Design Lab à The Gyaan Project',d:'11 Sep 2026',t:'How can India build roads that last?',n:'Podcast, 68 min: why roads fail, how potholes form and how recycled plastic builds a
499stronger base.',u:'https://www.youtube.com/watch?v=Rif8SZ5BG50'}, 500 {o:'Shark Tank India, season 3',d:'2024',t:'The GridMats pitch',n:'The full pitch on the official Shark Tank India channel.',u:'https://www.youtube.com/watch?v=aGpApSSIPFM'}, 501 {o:'ADPC · CARE for South Asia',d:'Oct 2022',t:'Climate-resilient transport: a conversation with Dr Prathap B Rao',n:'Issue 5 of the World Bank-supported CARE for South Asia newsletter.',u:'https://www.linkedin.com/posts/asian-disaster-preparedness-center-adpc-_the-fifth-issue-of-the-care-for-south-asia-activity-6991277437091287040-6mZe'}, 502 {o:'The India Advantage Summit',d:'',t:'Infrastructure and prop-tech panel, Bengaluru',n:'Dr Prathap B Rao on the stage at the TIA Summit.',u:'https://www.youtube.com/watch?v=gKl7_AOo5MQ'}, 503 {o:'TEDxLavelleRoad',d:'2018',t:'Fixing the world, one pothole at a time',n:'The talk that set out the idea behind GridMats.',u:'https://www.ted.com/talks/prathap_b_fixing_the_world_one_pothole_at_a_time'}, 504 {o:'LinkedIn',d:'',t:'Follow GridMats on LinkedIn',n:'Project updates, site notes and news from the team.',u:'https://www.linkedin.com/company/gridmats/'} 505]; 506const RECOG=[ 507 {t:'PCT publication WO/2023/100191',s:'âPlastic waste based interlocking grid matâ, published 8 Jun 2023; applicant GroundReality Enterprises.',u:'https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2023100191',src:'WIPO PATENTSCOPE'}, 508 {t:'Indian Patent 398992',s:'Plastic waste based interlocking grid mat; in force from 1 December 2021 for 20 years.',u:'files/GridMats_Certificates.pdf',src:'certificates pack'}, 509 {t:'Urban-heat-island patent',s:'Filed 2026.',src:''}, 510 {t:'Urban Mobility India 2023',s:'Innovation award, Best Innovative Solution, at the UMI Innovation Challenge.',u:'https://metrorailtoday.com/news/16th-urban-mobility-india-conference-exhibition-2023-concludes-with-resounding-success',src:'Metro Rail Today'}, 511 {t:'Solar Decathlon India',s:'GridMats® (GroundReality Enterprises) listed as an industry partner.',u:'https://sdichallenge.in/industry-partners/',src:'sdichallenge.in'}, 512 {t:'Shark Tank India, season 3',s:'Featured pitch, 2024.',u:'https://www.youtube.com/watch?v=aGpApSSIPFM',src:'Shark Tank India on YouTube'}, 513 {t:'Hyundai âBe The Better Guyâ',s:'Road-safety campaign feature, 2024.',u:'https://www.autocarindia.com/auto-features/branded-content-hyundai-be-the-better-guy-with-potholeraja-431612',src:'Autocar India'}, 514 {t:'Adani Green Talks 2025',s:'SDG 9 award.',u:'files/GridMats_Certificates.pdf',src:'certificates pack'}, 515 {t:'CII GreenPro',s:'Certified product, GPGEP277001.',u:'files/GridMats_Certificates.pdf',src:'certificates pack'}, 516 {t:'Climate Collective',s:'CCF-CIC-003.',src:''}, 517 {t:'Climate Redesign Award 2026',s:'Recognised for Breakthrough Climate Innovation. Presented by Climate Collective Foundation at Delhi Climate Innovation Week, February 2026.',u:'img/award_climate_redesign_2026.webp',src:'award plaque'}, 518 {t:'TGS 2026, IISc',s:'IIT Hyderabad research presented, for publication by Springer.',src:''} 519]; 520// quick start: what the visitor is building â first-cut defaults and the CRM fields 521const WHAT=[ 522 ['plant','Truck yard or plant road','<path d="M3 7h11v8H3zM14 10h4l3 3v2h-7z"/><circle cx="7" cy="17" r="1.7"/><circle cx="17" cy="17" r="1.7"/>',{finish:'any',veh:'t3',roadCategory:'Industrial Road'}], 523 ['road','Access or estate road','<path d="M8 3 5 21M16 3l3 18M12 5v3M12 11v3M12 17v3"/>',{finish:'any',veh:'t2',roadCategory:'Campus / IT Park'}], 524 ['parking','Car park','<rect x="4" y="3" width="16" height="18" rx="3"/><path d="M10 17V7h3a3 3 0 0 1 0 6h-3"/>',{finish:'stone',veh:'car',roadCategory:'Parking'}], 525 ['solar','Solar or wind park','<circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M2 12h2M20 12h2M5 5l1.5 1.5M17.5 17.5 19 19M5 19l1.5-1.5M17.5 6.5 19 5"/>',{finish:'stone',veh:'t2',roadCategory:'Other'}], 526 ['logistics','Warehouse or logistics yard','<path d="M3 8l9-5 9 5v8l-9 5-9-5z"/><path d="M3 8l9 5 9-5M12 13v8"/>',{finish:'any',veh:'t3',roadCategory:'Industrial Road'}], 527 ['temporary','Temporary road or crane pad','<path d="M4 12a8 8 0 0 1 14-5l2 2M20 12a8 8 0 0 1-14 5l-2-2"/><path d="M20 4v5h-5M4 20v-5h5"/>',{finish:'temporary',veh:'t3',roadCategory:'Other'}], 528 ['green','Walkway, lawn or green parking','<path d="M5 19c9 0 14-6 14-15-9 0-14 5-14 14z"/><path d="M5 19l8-8"/>',{finish:'green',veh:'car',roadCategory:'Other'}], 529 ['other','Something else','<circle cx="6" cy="12" r="1.6"/><circle cx="12" cy="12" r="1.6"/><circle cx="18" cy="12" r="1.6"/>',{finish:'any',veh:'car',roadCategory:'Other'}] 530]; 531const AREAS=[['Under 1,000 m²',800,'under 10,800 sq ft'],['1,000â5,000 m²',3000,'10,800â54,000 sq ft'],['5,000â25,000 m²',12000,'54,000 sq ftâ2.7 lakh sq ft'],['Over 25,000 m²',40000,'over 2.7 lakh sq ft']]; 532const WHENS=[['This month','Immediate (< 1 month)'],['1â3 months','1 â 3 months'],['3â6 months','3 â 6 months'],['Just exploring','Planning / exploratory']
532]; 533// the detailed design brief keeps the key names of the existing Project Enquiry form, so zoho.jsw and Design Engine 71 read it unchanged 534const BRIEF=[ 535 ['Site and scope',[['projectName','Project name and location','text','e.g. Plant 2 truck yard, Hosur'],['typeOfWork','Type of work','sel',['New Pavement Construction','Upgrade / Full Replacement','Overlay / Resurfacing']],['roadCategory','Where is it?','sel',['Industrial Road','Parking','Campus / IT Park','Urban Road','Airport','State Highway','National Highway','Other']],['pavementType','Surface in mind','sel',['Permeable (Gravel)','Permeable (Soil)','Rigid (Cement Concrete)','Flexible (Bituminous)','Mixed']],['roadLength','Length, m','num','metres'],['roadWidth','Width, m','num','metres'],['existingPavementType','Existing surface','sel',['No existing pavement','Bituminous (flexible)','Concrete (rigid)','Gravel','Worn out']],['existingPavementCondition','Existing condition','text','e.g. cracked, rutted, ponding']]], 536 ['Ground, levels and water',[['cbr','Soil CBR','sel',[['','Donât know'],['<2','Less than 2%'],['2-5','2% â 5%'],['5-10','5% â 10%'],['>10','More than 10%']]],['siteTopography','Site levels','sel',['Unknown','Flat','Gentle slope','Steep','Undulating','Filled-up land']],['waterTable','Water table','sel',['Unknown','Deep','High','Seasonal waterlogging','Frequent flooding']],['existingDrainage','Existing drainage','sel',['Unknown','None','Open drains','Covered drains','Roadside ditch']],['drainageCondition','Drainage condition','sel',['Not applicable','Good','Partially blocked','Poor']],['crossSlope','Cross / camber slope, %','num','e.g. 2.5'],['longGradient','Longitudinal gradient, %','num','e.g. 1.5'],['levelDrainageNotes','Levels and drainage notes','area','Anything about levels, slopes, drainage or flooding']]], 537 ['Traffic and design life',[['cvpd','Commercial vehicles per day','num','e.g. 500'],['designLife','Design life','sel',['10 years','15 years','20 years','25 years','30 years','IRC Standard']],['trafficGrowth','Traffic growth','sel',['3% per year','5% per year','7% per year','10% per year','Unknown']],['hasClientDesign','Do you have a design or BoQ?','sel',['Yes, consultant design available','Yes, internal BOQ/design available','No, GridMats to propose design','Not sure']]]], 538 ['Finish and priorities',[['desiredSurfaceFinish','Finish','sel',['CC hexagon finish','Asphalt finish','Gravel finish','Soil / natural finish','Grass / green finish','To be decided']],['aestheticRequirement','How much the look matters','sel',['High','Medium','Low','Functional only']],['skidRequirement','Skid resistance','sel',['Normal','High wet-weather safety','Industrial vehicle movement','Not known']],['drainageConcern','Drainage concern','sel',['Low','Medium','High','Waterlogging observed']],['ruttingConcern','Rutting or settlement today','sel',['No','Minor','Moderate','Severe']],['maintenancePriority','What matters most','sel',['Lowest initial cost','Lowest lifecycle cost','Fast execution','Low maintenance / uptime']],['esgReportRequired','ESG or carbon report needed?','sel',['Yes','No','May be required']],['qcTeam','Quality control by','sel',['3rd Party Inspector','In-house QC','GridMats Team','TBD']],['rdConsent','Open to new techniques?','sel',['Yes','Yes with approval','No','Decide later']]]], 539 ['Budget, timing and documents',[['budget','Estimated project value','sel',['< â¹25 Lakh','â¹25 â 50 Lakh','â¹50 Lakh â 1 Cr','â¹1 â 5 Cr','â¹5 â 10 Cr','â¹10 â 25 Cr','> â¹25 Cr']],['timeline','Start','sel',['Immediate (< 1 month)','1 â 3 months','3 â 6 months','6 â 12 months','Planning / exploratory']],['sitePhotosLink','Site photos (link)','url','Drive, OneDrive, Dropboxâ¦'],['soilTestReportLink','Soil or CBR report (link)','url',''],['siteDrawingsLink','Site or layout drawings (link)','url',''],['topoDrawingLink','Topography or survey (link)','url',''],['levelsLink','Levels or cross-sections (link)','url',''],['drainageDocsLink','Drainage or slope details (link)','url',''],['expectedPhotosLink','Pictures of the finish you like (link)','url',''],['existingSketchLink','Existing pavement sketch (link)','url',''],['additionalDocsLink','Tender, BoQ or other documents (link)','url','A shared folder works best']]] 540];
541const BRIEF_ADV=[ 542 ['Design traffic',[['msa','Design traffic, MSA','num','leave blank if unsure'],['vdf','Vehicle damage factor','num','e.g. 4.5'],['laneFactor','Lane distribution factor','num','e.g. 0.5'],['iriTarget','Evenness target, IRI m/km','num','']]], 543 ['Your existing design basis',[['clientDesignBasis','Design basis','sel',['IRC / MoRTH','Client internal standard','Consultant recommendation','Previous project practice','Not known']],['clientDesignLife','Design life, years','num',''],['clientDesignMSA','Design traffic, MSA','num',''],['clientDesignReference','Drawing, BoQ or consultant reference','text',''],['clientDesignNote','Assumptions or approval notes','area','']]], 544 ['Flexible layers, mm',[['clientBCmm','BC / wearing course','num',''],['clientDBMmm','DBM','num',''],['clientWMMmm','WMM','num',''],['clientGSBmm','GSB','num',''],['clientCappingmm','Subgrade capping','num','']]], 545 ['Rigid layers, mm',[['clientPQCmm','PQC / CC slab','num',''],['clientDLCmm','DLC / PCC sub-base','num',''],['clientWMMmmRigid','WMM / CT-WMM','num',''],['clientGSBmmRigid','GSB','num',''],['clientCappingmmRigid','Subgrade improvement','num',''],['clientBUCDamage','BUC damage ratio','num','if checked'],['clientTDCDamage','TDC damage ratio','num','if checked']]], 546 ['Steel and joints in the concrete design',[['ccSteelUsage','Steel or load transfer','sel',['No steel proposed','Dowels only','Tie bars only','Dowels + tie bars','Continuous reinforcement','Steel mesh / reinforcement','Construction joints only','Not known','Other / consultant specified']],['ccNoSteelReason','If no steel, why','text',''],['ccDowelBars','Dowel bars','sel',['Yes','No','Not known']],['ccDowelDiaMm','Dowel diameter, mm','num',''],['ccDowelLengthMm','Dowel length, mm','num',''],['ccDowelSpacingMm','Dowel spacing, mm','num',''],['ccTieBars','Tie bars','sel',['Yes','No','Not known']],['ccTieBarDiaMm','Tie bar diameter, mm','num',''],['ccTieBarLengthMm','Tie bar length, mm','num',''],['ccTieBarSpacingMm','Tie bar spacing, mm','num',''],['ccContinuousReinforcement','Continuous reinforcement','sel',['Yes','No','Not known']],['ccContinuousRebarDiaMm','Rebar diameter, mm','num',''],['ccContinuousRebarSpacingMm','Rebar spacing, mm','num',''],['ccSteelGrade','Steel grade or specification','text',''],['ccConstructionJoints','Joints','sel',['Provided as per drawing','Transverse contraction joints','Longitudinal joints','Construction joints only','Not provided','Not known']],['ccJointSpacingM','Joint spacing, m','num',''],['ccJointSealing','Joint sealing or filler','text',''],['ccSteelDesignNote','Steel and jointing note','text','']]], 547 ['Gravel layers, mm',[['clientGravelSurfaceMm','Gravel / murram / WBM surface','num',''],['clientWBMBaseMm','WBM / WMM / gravel base','num',''],['clientGSBmmGravel','GSB / drainage layer','num',''],['clientCappingmmGravel','Subgrade improvement','num','']]], 548 ['Cement-treated base',[['clientCTBUsed','CTB or CTSB used?','sel',['No','CTB only','CTSB only','Both CTB and CTSB','Not known']],['clientCTBmm','CTB thickness, mm','num',''],['clientCTSBmm','CTSB thickness, mm','num',''],['ctbModulusMPa','CTB modulus, MPa','num','default 5000 if blank'],['ctsbModulusMPa','CTSB modulus, MPa','num','default 600 if blank'],['ctbFlexuralMPa','CTB flexural strength, MPa','num',''],['ctbFatigueStatus','CTB fatigue check','sel',['Checked and safe','Checked, revise thickness','Not checked','Not applicable']],['ctbDesignNote','CTB / CTSB note','text','']]] 549]; 550const WORLD={"w": 1000, "h": 460, "d": "M284 453L292 456L290 457L286 456L283 459L280 458L271 455L265 449L275 453L277 449L280 448L282 448L284 453ZM310 443L312 445L311 446L307 447L306 446L304 447L302 446L310 443ZM667 438L663 439L664 435L668 436L667 438ZM876 408L879 409L884 408L883 416L882 415L880 418L878 417L874 409L874 407L876 408ZM953 408L953 410L955 408L956 410L952 417L953 418L948 420L946 425L943 428L935 426L936 423L946 415L950 408L952 407L953 408ZM957 392L959 395L959 393L961 397L963 398L968 397L967 402L964 402L961 410L959 411L957 409L959 407L958 405L955 403L957 401L957 396L952 386L956 389L957 392ZM936 344L935 345L932 342L928 337L936 344ZM968 327L968 330L965 330L966 327L968 327ZM972 325L969 326L968 325L973 323L972 325ZM936 319L937 322L936 322L935 318L936 319ZM611 314L612 322
550L612 323L611 321L610 322L610 326L604 349L603 353L598 356L595 354L593 346L593 341L594 340L596 334L594 328L596 323L601 322L605 318L605 315L606 315L609 309L611 314ZM871 315L872 318L874 316L876 319L879 333L886 338L888 344L891 345L891 348L897 355L898 357L899 364L897 374L890 390L889 396L884 398L879 402L875 400L875 398L871 401L863 398L860 392L856 390L856 386L855 388L852 389L855 383L855 381L850 388L848 386L845 380L837 376L823 378L817 381L816 384L805 384L800 388L796 388L792 385L792 383L794 382L794 376L787 357L788 359L787 356L790 358L787 351L789 342L790 345L791 343L796 339L808 335L812 330L814 324L815 327L816 326L815 325L816 323L817 324L818 321L821 317L825 315L829 319L832 319L832 317L835 311L840 309L840 308L838 306L840 306L848 310L851 308L853 310L850 314L849 319L862 329L865 324L866 310L868 304L871 315ZM923 304L923 305L921 305L920 303L923 304ZM808 303L803 301L805 300L808 303ZM919 302L916 301L916 299L919 302ZM818 303L815 303L817 300L820 297L826 297L820 300L818 303ZM800 296L803 298L797 299L800 296ZM814 296L813 297L805 298L805 297L808 296L809 297L814 296ZM774 291L779 291L780 290L794 296L790 298L773 294L765 291L767 288L770 288L774 291ZM846 289L845 291L846 286L846 289ZM905 291L902 288L902 285L905 291ZM894 287L890 289L884 287L884 286L888 287L889 285L890 287L891 286L893 284L893 282L895 283L894 287ZM826 280L825 281L822 279L825 279L826 280ZM835 278L836 281L833 280L828 279L828 278L835 278ZM898 283L897 284L896 281L891 277L892 276L895 279L898 283ZM845 272L846 277L848 279L851 276L856 274L874 281L878 287L882 289L883 290L880 291L881 293L891 304L883 303L878 295L874 294L870 296L871 299L868 300L864 299L862 296L859 296L854 297L857 293L855 286L844 280L842 282L841 279L839 277L844 276L844 275L840 275L835 271L840 269L844 270L845 272ZM820 263L818 266L816 267L806 267L806 270L808 273L815 270L815 271L813 271L810 274L814 286L813 287L812 286L813 283L810 284L810 283L810 282L808 280L808 277L806 278L807 287L805 287L804 286L804 280L802 277L806 266L808 263L814 265L820 263ZM830 264L830 267L828 267L828 271L826 264L828 260L830 264ZM766 288L763 288L757 282L748 267L746 262L737 249L743 250L752 261L755 261L761 267L760 270L762 271L764 276L766 276L767 278L766 288ZM800 261L803 265L799 265L799 271L796 273L795 282L794 280L791 282L790 280L787 278L784 280L783 278L778 278L778 273L775 269L775 263L777 261L779 262L781 261L782 259L786 257L796 244L799 247L803 249L798 257L800 260L800 261ZM823 239L824 243L823 246L822 243L820 244L821 249L817 247L817 242L816 241L811 244L811 243L812 240L815 238L816 239L821 237L821 234L823 236L823 239ZM698 246L695 247L694 245L695 234L699 242L698 246ZM303 233L300 233L301 231L303 230L303 233ZM817 232L814 237L812 234L814 230L815 230L815 233L817 229L817 232ZM801 236L798 239L804 229L805 232L801 236ZM811 227L814 228L811 232L811 227ZM821 226L822 230L819 229L820 232L819 233L818 228L819 229L819 227L817 225L820 225L821 226ZM810 223L809 226L806 222L810 223ZM809 204L811 205L812 204L813 209L810 213L810 219L817 220L817 225L814 221L813 222L811 220L807 220L808 218L807 217L807 218L806 216L805 212L806 213L808 204L809 204ZM290 205L286 206L285 205L290 205ZM259 206L255 205L259 205L261 206L259 206ZM271 200L278 200L282 204L281 205L276 205L274 207L271 205L267 206L265 205L266 204L271 204L270 201L268 200L271 200ZM779 204L776 205L774 204L774 201L775 200L780 199L781 200L779 204ZM40 202L39 202L39 198L42 201L40 202ZM251 190L252 191L255 190L266 199L256 200L258 198L255 197L254 194L245 192L244 191L245 190L242 190L239 193L236 193L240 190L244 188L251 190ZM257 186L254 183L255 181L257 186ZM809 190L808 192L806 187L810 181L811 182L809 190ZM258 176L258 179L256 175L258 176ZM846 151L845 154L844 153L842 155L840 155L841 151L846 151ZM568 145L564 149L562 147L568 145ZM538 145L545 147L541 148L538 147L538 145ZM515 137L514 142L507 139L507 137L515 137ZM498 126L499 129L499 133L497 134L495 127L498 126ZM864 140L862 147L853 149L849 153L848 152L847 149L836 151L839 154L837 160L835 161L834 160L835 157L832 153L841 146L849 146L852 140L854 141L860 137L861 132L861 129L862 126L865 126L866 133L864 137L864 140ZM499 123L498 126L497 125L496 123L498 120L499 123ZM872 116L874 117L876 115L877 119L872 120L870 124L866 121L864 125L861 125L861 122L862 119L865 119L867 111L872 116ZM295 108L300 108L298 110L293 107L294 106L295 108ZM301 99L293 97L298 97L301 99ZM129 101L123 100L119 97L117 96L116 93L123 95L129 101ZM316 94L314 97L316 96L318 96L317 98L324 99L323 101L325 101L326 105L325 108L322 107L322 104L318 107L317 107L319 105L316 104L308 104L309 102L308 101L313 94L318 91L316 94ZM104 82L106 82L105 86L108 89L103 84L102 82L104 82ZM871 94L874 100L870 99L868 103L871 107L871 109L869 107L867 110L867 93L866 89L866 85L868 83L867 82L868 81L871 94ZM453 88L448 90L445 90L447 86L445 83L451 79L454 78L456 80L453 88ZM507 77L506 80L503 76L50
5507 75L507 77ZM47 72L44 73L43 71L48 69L50 70L47 72ZM464 66L461 70L467 70L464 76L466 76L469 80L471 81L474 86L477 87L475 90L476 92L474 93L464 94L458 96L456 96L463 91L458 91L458 89L460 88L459 86L459 84L464 84L464 82L462 80L459 80L458 76L457 78L455 73L458 66L464 66ZM12 62L7 61L12 61L12 62ZM252 54L251 56L249 55L250 54L252 54ZM245 52L241 54L239 53L241 52L245 52ZM236 42L236 44L238 43L245 46L246 48L250 49L247 50L241 48L235 51L234 49L230 50L232 48L234 42L236 42ZM432 40L431 42L434 44L431 47L420 50L409 48L412 47L406 45L411 44L410 43L405 43L407 40L411 40L415 42L419 40L423 41L427 39L432 40ZM261 37L258 37L258 36L259 34L264 34L261 37ZM972 31L986 37L986 39L988 40L987 38L995 38ZM998 43L993 43L993 46L989 47L983 45L983 43L977 43L975 42L976 41L973 42L974 43L972 45L965 46L970 52L970 54L965 53L955 56L945 62L941 60L934 63L933 61L930 63L927 62L922 68L922 69L926 70L925 75L923 75L921 78L923 79L918 81L917 85L913 86L912 89L908 93L904 78L905 73L908 69L912 68L927 58L929 53L926 53L924 56L917 60L915 56L908 57L901 63L903 65L892 66L893 63L888 63L885 65L867 65L848 80L852 80L853 82L856 83L858 82L861 82L865 86L865 88L863 92L861 101L856 109L847 119L843 121L840 119L833 124L833 127L826 131L826 133L829 135L832 141L831 147L824 150L823 142L825 141L823 138L820 138L819 137L820 132L817 131L808 134L812 129L810 127L803 133L800 133L799 135L800 137L802 138L803 139L805 140L808 138L812 139L813 141L809 142L803 148L806 150L811 159L811 162L809 162L811 165L810 171L809 171L802 183L794 190L789 191L788 190L780 194L779 198L777 198L777 194L774 193L766 200L766 202L775 215L776 222L776 228L764 238L764 234L760 231L757 226L752 224L753 222L750 222L748 236L750 236L751 242L758 249L762 263L760 264L754 258L750 246L746 239L745 241L747 228L742 210L737 214L734 213L734 205L732 200L729 197L726 190L724 189L723 193L720 192L719 193L714 194L712 199L708 201L701 209L701 211L695 213L694 232L693 232L691 235L692 236L690 237L688 240L685 237L676 213L674 194L670 197L668 196L664 192L666 191L665 189L660 186L657 180L643 182L632 179L629 175L624 177L615 172L611 164L608 164L605 165L608 173L612 176L613 183L614 178L616 179L615 183L616 185L622 185L629 177L630 185L635 187L638 191L635 198L633 198L632 203L626 207L626 209L618 212L617 214L607 220L599 222L597 224L593 224L591 216L591 210L586 201L581 195L579 186L576 184L570 171L568 171L569 166L566 173L562 165L567 178L571 186L571 188L575 192L576 204L579 206L581 213L593 225L591 227L596 232L614 226L614 231L610 244L605 253L584 277L581 284L580 288L582 291L581 297L585 305L585 318L584 323L576 328L569 336L571 344L571 351L563 356L564 358L562 365L556 375L551 380L544 384L535 384L527 387L523 385L522 380L523 376L514 361L512 344L505 330L505 325L507 314L510 309L510 305L508 299L509 297L505 285L497 272L499 257L496 251L489 253L484 246L480 246L467 252L459 250L450 253L438 243L431 230L426 226L426 221L423 217L426 212L427 206L425 193L432 178L437 172L440 171L446 165L445 161L446 156L453 151L456 145L466 147L476 142L487 142L490 140L496 141L499 140L501 140L500 142L503 141L502 143L503 145L502 148L500 150L501 152L504 154L515 157L516 160L525 164L528 161L528 157L532 155L542 159L553 162L558 159L561 162L562 160L566 161L568 159L572 149L572 143L573 142L569 141L567 143L563 144L560 142L557 142L555 144L552 142L549 142L545 137L547 134L545 132L548 129L552 129L553 126L559 127L565 124L570 123L579 127L584 127L588 125L587 121L574 112L578 109L577 108L581 106L569 109L569 111L574 112L573 113L566 115L565 115L565 113L562 112L566 110L565 110L560 109L560 107L558 108L555 113L552 114L549 122L552 127L549 127L545 130L545 128L541 127L538 128L540 130L539 131L535 130L539 138L536 138L537 139L535 140L537 143L535 143L532 141L531 136L526 130L526 125L517 118L514 113L512 112L511 114L511 111L509 111L506 112L507 116L514 124L516 124L516 125L524 130L523 131L519 129L518 131L520 132L520 134L517 137L516 138L517 134L515 130L506 125L501 120L501 117L497 115L490 120L485 119L481 120L481 124L478 126L474 127L471 133L473 135L466 142L460 142L457 144L454 141L448 141L448 136L446 135L448 128L446 120L450 118L467 119L468 117L469 110L464 104L460 103L459 101L468 101L467 97L469 98L476 96L477 93L483 91L485 86L492 83L495 84L497 82L495 77L496 72L502 70L501 72L503 74L499 77L500 80L503 81L503 82L507 81L511 83L521 79L527 81L527 79L531 78L531 73L532 71L535 70L537 72L539 72L540 67L537 67L537 65L544 63L550 64L553 62L550 60L536 62L531 59L532 56L531 53L532 51L543 44L542 43L539 41L534 42L531 45L532 47L522 52L520 57L524 62L522 65L519 66L516 75L513 75L511 78L508 78L501 64L49
5506 68L492 68L488 67L486 55L501 46L513 35L526 28L536 27L540 24L550 23L559 26L556 27L559 29L561 28L566 30L574 31L586 36L586 38L579 41L564 39L569 42L569 47L575 49L575 47L574 45L575 44L582 46L585 45L583 43L589 40L594 41L596 39L594 37L595 34L593 32L601 33L602 35L599 36L599 38L601 39L605 38L606 36L621 31L624 32L621 34L636 31L639 33L642 31L639 29L640 28L649 29L663 34L664 32L661 30L658 29L659 28L657 24L666 17L674 18L674 20L672 23L674 26L674 31L677 33L670 40L673 41L681 35L679 33L680 31L677 31L677 29L679 25L675 22L680 20L680 18L682 20L681 23L684 24L683 21L688 20L693 19L699 21L696 19L696 15L713 14L711 12L714 10L731 7L741 7L752 5L756 2L762 1L767 2L763 3L769 4L770 5L781 4L789 7L789 9L776 13L786 14L788 16L793 15L802 15L803 17L814 17L815 15L825 15L829 17L831 19L829 21L837 25L840 21L844 23L861 22L859 19L862 18L888 20L897 25L914 24L916 26L916 28L919 29L938 29L943 32L947 31L944 29L946 27L960 28L972 31ZM207 31L205 32L195 30L199 27L207 31ZM972 22L972 25L969 25L969 24L972 22ZM972 22L979 23L972 25L972 22ZM221 29L221 33L224 30L228 32L227 35L230 37L235 32L235 28L243 29L246 30L247 32L245 34L247 36L246 37L241 40L234 39L230 45L226 48L222 48L220 49L220 52L217 52L213 55L210 59L209 65L213 66L216 72L220 71L236 78L244 78L244 85L246 89L250 92L252 91L254 87L252 82L250 80L255 78L260 74L257 68L254 66L257 62L255 54L267 53L274 58L279 58L280 65L284 68L288 66L293 61L302 72L301 74L313 80L314 83L317 85L318 89L305 95L288 95L282 99L275 107L277 106L282 102L287 99L292 99L294 100L291 103L293 109L297 111L301 110L304 106L304 109L306 110L291 118L289 118L288 115L293 112L286 113L286 114L277 118L276 120L275 122L278 125L267 127L272 127L267 128L264 134L262 132L264 136L261 140L262 138L260 133L260 137L258 137L260 138L262 146L260 148L253 153L246 160L246 165L250 175L249 181L247 181L245 179L242 172L242 168L239 164L236 166L232 163L224 164L223 164L224 167L222 168L218 166L212 166L204 171L202 174L202 179L200 191L205 201L210 205L217 204L220 202L221 196L230 194L231 196L228 205L227 204L227 211L225 213L236 213L241 215L239 230L244 237L246 238L251 235L259 238L262 235L263 231L264 230L268 229L273 225L275 226L274 228L272 229L273 237L275 234L274 230L277 229L278 226L283 232L288 231L292 233L294 231L300 231L298 232L299 234L303 236L304 238L308 240L310 244L313 247L322 248L330 253L332 261L333 262L333 264L331 267L332 268L337 269L337 272L339 270L347 273L348 277L352 276L361 278L369 284L373 285L376 293L375 299L365 313L363 329L358 343L356 347L348 348L340 353L338 357L336 366L323 386L320 388L316 387L310 384L310 386L313 389L314 394L312 399L308 401L299 401L300 407L298 409L291 409L292 412L294 413L295 412L296 414L291 417L290 422L285 424L284 427L290 430L289 433L286 435L284 439L280 442L283 447L279 447L275 449L275 453L271 452L264 447L262 435L266 429L262 428L265 425L266 419L269 420L270 413L268 412L267 417L266 416L269 403L268 395L269 395L274 379L274 367L275 363L277 336L277 331L274 327L261 318L251 292L247 289L247 287L246 284L251 277L250 275L249 277L247 275L247 271L250 265L253 263L254 259L258 255L255 239L251 237L249 240L250 242L248 243L247 241L240 239L240 237L236 233L236 235L234 234L234 230L229 223L229 222L226 223L219 220L209 212L204 214L185 205L179 199L180 194L178 190L169 180L169 177L166 175L165 172L160 168L158 161L153 159L154 164L162 176L165 184L166 184L168 188L167 189L161 183L160 178L153 173L154 173L155 170L151 166L146 154L143 151L137 149L127 129L126 121L128 111L126 102L130 103L132 106L131 100L123 95L118 93L117 88L114 87L113 84L106 77L105 74L101 71L100 68L93 68L84 63L72 62L64 59L60 59L61 62L51 65L52 59L55 58L54 57L44 64L46 66L44 68L38 71L32 76L14 81L34 70L36 66L30 67L29 65L28 67L27 65L22 66L23 63L21 62L17 62L13 60L13 58L11 57L15 51L19 51L26 49L24 47L26 45L20 47L14 47L10 46L5 42L15 39L18 39L17 41L23 41L9 33L11 31L19 30L22 26L37 23L43 25L73 27L93 31L99 29L103 29L112 27L114 28L116 26L123 29L127 27L127 30L135 28L156 33L152 35L167 34L170 36L173 35L170 33L172 32L1
55077 32L182 34L190 36L199 35L198 33L201 32L205 34L205 37L207 34L209 34L210 31L204 27L204 23L208 21L214 23L218 27L216 28L221 29ZM155 17L154 18L160 17L164 19L167 17L169 18L172 22L173 20L171 17L176 17L179 18L182 24L192 27L191 29L187 29L189 30L188 32L178 30L157 32L156 31L150 30L146 28L160 26L145 26L143 24L150 23L141 22L145 18L152 16L155 17ZM182 16L180 18L175 16L182 16ZM260 17L260 18L251 18L248 16L248 15L255 15L260 17ZM232 17L234 19L237 16L244 15L248 18L248 20L256 18L266 21L266 23L272 22L274 24L281 26L286 30L281 32L292 35L296 38L300 38L300 41L295 45L287 40L283 40L283 42L291 47L293 50L292 53L281 49L288 55L275 52L272 50L273 49L264 46L264 47L256 47L254 46L256 44L267 43L266 42L270 37L270 35L259 31L260 30L253 27L246 28L224 25L226 23L223 23L222 20L224 17L234 14L232 17ZM193 14L202 15L202 16L200 17L204 19L204 22L196 23L188 19L188 18L193 18L190 16L193 14ZM871 16L861 16L867 14L871 16ZM213 18L210 21L207 20L206 16L210 13L221 14L213 18ZM138 23L130 24L122 21L128 15L125 13L146 13L151 16L141 19L138 21L138 23ZM891 10L888 11L878 10L879 9L891 10ZM212 10L211 12L203 11L209 8L212 10ZM875 8L873 11L858 12L853 9L854 7L858 6L875 8ZM199 4L201 6L200 10L195 11L192 10L192 8L187 8L187 6L199 4ZM172 6L173 7L178 7L179 9L177 10L160 12L156 12L156 11L162 10L145 10L152 5L169 9L165 5L168 4L171 5L172 6ZM632 25L621 25L621 23L616 22L615 21L618 20L618 18L623 15L621 15L628 12L627 10L656 4L662 4L663 5L643 9L635 13L626 19L627 22L632 25ZM209 3L218 4L220 5L220 7L224 8L247 8L250 11L245 12L223 12L215 11L214 7L211 6L202 4L203 3L209 3ZM149 1L149 4L147 5L135 7L131 6L141 2L149 1ZM166 1L161 2L157 1L163 -1L167 0L166 1ZM541 1L535 2L530 1L532 0L530 -1L536 -2L541 1ZM168 -2L160 -1L163 -3L168 -2ZM206 -0L200 -0L198 -3L207 -1L206 -0ZM194 -1L195 0L180 -1L183 -2L179 -3L179 -4L192 -3L194 -1ZM764 -1L748 0L754 -4L756 -5L765 -2L764 -1ZM523 -6L532 -3L525 -2L520 4L516 4L510 2L513 1L503 -3L501 -6L509 -7L514 -6L519 -7L523 -6ZM543 -8L548 -7L544 -5L536 -5L528 -5L520 -8L536 -9L543 -8ZM614 -9L604 -7L601 -8L603 -9L597 -9L606 -10L607 -9L611 -10L615 -9L614 -9ZM750 -3L736 -4L725 -8L739 -11L751 -6L750 -3ZM231 -6L234 -5L225 -1L220 -1L214 -1L211 -3L213 -5L208 -5L204 -7L210 -10L209 -11L216 -11L219 -9L228 -8L231 -6ZM282 -18L300 -16L284 -12L290 -12L279 -9L274 -6L259 -5L262 -4L260 -3L263 -2L251 3L256 4L248 6L224 5L223 4L228 3L227 0L236 2L228 -1L236 -5L231 -8L241 -7L245 -8L229 -9L218 -13L235 -16L241 -15L243 -17L252 -18L282 -18ZM397 -19L414 -16L409 -15L384 -14L403 -13L409 -14L411 -13L408 -11L428 -13L437 -13L438 -11L425 -8L417 -7L423 -7L417 -3L418 1L421 3L412 5L417 7L418 9L415 10L418 13L412 13L415 14L415 16L407 16L410 18L410 20L405 19L403 19L411 22L412 25L407 26L401 23L402 25L399 27L410 27L395 33L384 34L377 39L362 43L359 45L358 50L353 53L354 55L352 61L348 62L344 59L338 59L329 49L327 44L323 41L324 38L322 37L325 33L329 32L331 28L324 30L320 29L321 25L329 26L322 22L317 22L320 19L313 11L309 10L309 9L302 7L282 7L274 3L287 2L269 -0L269 -1L290 -5L291 -6L283 -7L299 -11L298 -13L313 -14L325 -13L332 -15L349 -13L342 -14L342 -16L365 -19L397 -19Z", "pts": [["Bengaluru · HQ and plants", 687.8, 223.2, "hq", -14, -12, "end"], ["Los Angeles", 143.8, 150.9, "office", 0, 26, "middle"], ["Kuala Lumpur", 754.7, 257.0, "office", 10, 4, "start"], ["Cape Town", 523.4, 384.2, "office", 10, 12, "start"], ["Canada", 251.7, 117.9, "partner", 10, -6, "start"], ["USA", 208.3, 144.2, "partner", 10, 10, "start"], ["Nigeria", 481.6, 245.4, "partner", -10, 4, "end"], ["Romania", 544.7, 115.2, "partner", 10, -6, "start"], ["Mauritius", 632.1, 337.6, "partner", 10, 6, "start"]]}; 551 552// ---- round 4: shared state (per visitor, this browser only) ---- 553 554function lead(){try{return JSON.parse(sessionStorage.getItem('gm_lead')||'null')||MEM.lead||{}}catch(e){return MEM.lead||{}}} 555function saveLead(o){MEM.lead=o;try{sessionStorage.setItem('gm_lead',JSON.stringify(o))}catch(e){}return o} 556function flag(k,v){if(v===undefined){try{const s=sessionStorage.getItem(k);if(s)return s}catch(e){}return MEM[k]}MEM[k]=v;try{sessionStorage.setItem(k,v)}catch(e){}} 557function refNo(){const d=new Date();return 'GM-'+String(d.getFullYear()).slice(2)+String(d.getMonth()+1).padStart(2,'0')+String(d.getDate()).padStart(2,'0')+'-'+(Math.random().toString(36).slice(2)+'0000').slice(0,4).toUpperCase()} 558function waLink(text){return 'https://wa.me/'+WA_NUM+'?text='+encodeURIComponent(text)} 559const ICON=p=>`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${p}</svg>`; 560// ---- field checks: every lead form uses these, so junk never reaches Zoho ----
561const STATES=['Andhra Pradesh','Arunachal Pradesh','Assam','Bihar','Chhattisgarh','Goa','Gujarat','Haryana','Himachal Pradesh','Jharkhand','Karnataka','Kerala','Madhya Pradesh','Maharashtra','Manipur','Meghalaya','Mizoram','Nagaland','Odisha','Punjab','Rajasthan','Sikkim','Tamil Nadu','Telangana','Tripura','Uttar Pradesh','Uttarakhand','West Bengal','Andaman and Nicobar Islands','Chandigarh','Dadra and Nagar Haveli and Daman and Diu','Delhi','Jammu and Kashmir','Ladakh','Lakshadweep','Puducherry']; 562function stateOptions(v){return `<option value="">Select the state</option>${STATES.map(x=>`<option${v===x?' selected':''}>${x}</option>`).join('')}<option value="Outside India"${v==='Outside India'?' selected':''}>Outside India</option>`} 563const JUNK=/^(test|testing|tester|abc|abcd|abcde|xyz|asdf|asdfg|asdfgh|qwe|qwer|qwerty|zxc|zxcv|na|n\/a|nil|null|none|no|nothing|nobody|unknown|xxx+|sample|dummy|demo|fake|temp|hello|hi|hey|ok|okay|yes|aaa+|bbb+|name|company|city|user|admin|abc123|test123|123|1234|12345|123456)$/i; 564const THROWAWAY=/^(mailinator|tempmail|temp-mail|tempmailo|10minutemail|guerrillamail|guerrillamailblock|yopmail|trashmail|getnada|nada|sharklasers|dispostable|maildrop|throwawaymail|fakeinbox|mailnesia|emailondeck|moakt|mintemail|spamgourmet|mohmal|burnermail|mailcatch|tempinbox|tempr|discard|spambox|example|test|domain)\./i; 565function junk(s){const t=s.toLowerCase().replace(/[\s.\-_']+/g,'');return !t||JUNK.test(t)||/(.)\1{3,}/.test(t)||/^[^a-zÃ-ï¿¿]+$/.test(t)} 566function vName(s){s=(s||'').trim();if(s.length<2)return 'Please enter your full name.';if(s.length>60)return 'That name is too long.'; 567 if(!/^\p{L}[\p{L}\p{M} .'-]*$/u.test(s))return 'Use letters only in the name.';if(junk(s))return 'Please enter your real name.';return ''} 568function vPhone(s){const d=(s||'').replace(/[\s\-().]/g,'');if(!d)return 'Please enter a mobile number we can call.';if(!/^\+?\d+$/.test(d))return 'Use digits only in the mobile number.'; 569 const n=d.replace(/^\+/,'');const india=d.startsWith('+91')||!d.startsWith('+'); 570 if(india){const m=n.match(/^(?:91|0)?([6-9]\d{9})$/);if(!m)return 'Enter a 10-digit Indian mobile number (starting 6, 7, 8 or 9), or + and the country code for other countries.'; 571 if(/^(\d)\1{9}$/.test(m[1])||/1234567890|9876543210|0123456789/.test(m[1]))return 'Please enter a real mobile number.';return ''} 572 if(n.length<8||n.length>15||/^(\d)\1+$/.test(n))return 'Enter the full international number with its country code.';return ''} 573function vEmail(s){s=(s||'').trim().toLowerCase();if(!s)return 'Please enter your email address.'; 574 if(!/^[a-z0-9._%+-]+@[a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,}$/.test(s)||/\.\./.test(s))return 'Please enter a valid email address.'; 575 const [local,dom]=s.split('@');if(THROWAWAY.test(dom)||junk(local.replace(/\d+$/,''))&&local.length<7)return 'Please use your work or personal email, not a test or temporary address.';return ''} 576function vCompany(s){s=(s||'').trim();if(s.length<2)return 'Please enter your company or organisation (or "Individual" for your own property).';if(s.length>100)return 'That company name is too long.'; 577 if(((s.match(/\p{L}/gu)||[]).length)<2)return 'Please enter the company name in words.';if(/https?:|www\.|:\/\/|<[^>]*>/i.test(s))return 'Please enter the company name, not a web address.';if(junk(s))return 'Please enter your real company name (or "Individual").';return ''} 578function vPlace(s,what){s=(s||'').trim();what=what||'city or town';if(s.length<2)return 'Please enter the '+what+'.';if(s.length>50)return 'That '+what+' is too long.'; 579 if(!/^\p{L}[\p{L}\p{M} .,'()-]*$/u.test(s))return 'Use letters only in the '+what+'.';if(junk(s))return 'Please enter a real '+what+'.';return ''} 580function vState(s){return s?'':'Please choose the state.'} 581function vArea(a,optional){a=+a;if(!a)return optional?'':'Pick an area range or enter the area in m².';if(a<20||a>10000000)return 'Enter an area between 20 m² (215 sq ft) and 1,00,00,000 m².';return ''} 582function vUrl(s){s=(s||'').trim();if(!s)return '';return /^https?:\/\/[^\s.]+\.[^\s]{2,}$/i.test(s)?'':'Paste the full link, starting with https://'} 583function fieldErr(el,msg){if(!el)return;el.classList.toggle('bad',!!msg);el.setAttribute('aria-invalid',msg?'true':'false'); 584 let t=el.parentElement.querySelector(':scope > .ferr');if(!t){t=document.createElement('small');t.className='ferr';el.insertAdjacentElement('afterend',t)}t.textContent=msg||'';
584if(!t.id)t.id='ferr'+(++FERR);if(msg)el.setAttribute('aria-describedby',t.id);else el.removeAttribute('aria-describedby')} 585let FERR=0; 586function a11y(root){if(!root)return; 587 root.querySelectorAll('.tbl').forEach(t=>{if(t.hasAttribute('tabindex'))return;t.tabIndex=0;t.setAttribute('role','region');let h=t.previousElementSibling;while(h&&!/^H[1-6]$/.test(h.tagName))h=h.previousElementSibling;t.setAttribute('aria-label',((h&&h.textContent)||'Table').trim().slice(0,90)+' (table)')}); 588 root.querySelectorAll('a.btn,button.btn').forEach(x=>{const t=x.textContent.trim();if(!/^(Download|Open|Watch|View|Request)$/.test(t)||x.hasAttribute('aria-label'))return;const c=x.closest('li,.card');const n=c&&c.querySelector('b,h3,h2');if(n)x.setAttribute('aria-label',t+': '+n.textContent.trim())}); 589 root.querySelectorAll('a[target="_blank"]').forEach(a=>{if(!a.querySelector('.sr'))a.insertAdjacentHTML('beforeend','<span class="sr"> (opens in a new tab)</span>')}); 590 if(root.id==='app'){let h2=false;root.querySelectorAll('h1,h2,h3').forEach(h=>{if(h.tagName!=='H3'){if(h.tagName==='H2')h2=true;return}if(h2||h.closest('.slide'))return; 591 const n=document.createElement('h2');[...h.attributes].forEach(a=>n.setAttribute(a.name,a.value));n.classList.add('h3');n.innerHTML=h.innerHTML;h.replaceWith(n)})}} 592function checkFields(pairs){let first=null;pairs.forEach(([el,msg])=>{fieldErr(el,msg);if(msg&&el&&!first)first=el});if(first)first.focus();return !!first} 593document.addEventListener('change',e=>{const st=e.target.closest('select[data-state]');if(!st)return;const box=st.closest('[data-placebox]');const c=box&&box.querySelector('[data-country]');if(c){c.hidden=st.value!=='Outside India';if(c.hidden)fieldErr(c.querySelector('input'),'')}if(st.value)fieldErr(st,'')}); 594document.addEventListener('input',e=>{const el=e.target;if(el.classList&&el.classList.contains('bad'))fieldErr(el,'')}); 595function placeFields(L,ids){ids=ids||{};const c=ids.city?` id="${ids.city}"`:' data-f="city"',st=ids.state?` id="${ids.state}"`:' data-f="state"',co=ids.country?` id="${ids.country}"`:' data-f="country"'; 596 return `<div class="row" data-placebox><label>City or town <span class="req">*</span><input${c} value="${esc(L.city||'')}" placeholder="e.g. Hosur" autocomplete="address-level2"></label><label>State <span class="req">*</span><select${st} data-state>${stateOptions(L.state||'')}</select></label> 597<label data-country${L.state==='Outside India'?'':' hidden'}>Country <span class="req">*</span><input${co} value="${esc(L.country&&L.country!=='India'?L.country:'')}" placeholder="e.g. Nigeria" autocomplete="country-name"></label></div>`} 598function placeText(L){return [L.city,L.state==='Outside India'?L.country:L.state].filter(Boolean).join(', ')} 599const DRAFT_NOTE=`<b>This is a draft estimate.</b>For a detailed BoQ, design and report, fill in the Project Enquiry in full and add your supporting documents: drawings, site photos, soil report and levels.`; 600// ---- quick estimate card: three taps, then the indicative estimate ---- 601function qsCard(id,title,sub){const L=lead();return `<div class="qs" data-qs="${id}" data-step="1"> 602<h2 class="qs-t">${title||'What would your road or yard cost on GridMats?'}</h2><p class="sub">${sub||'Three quick taps for an indicative estimate. Our engineers follow with the full design, bill of quantities and cost comparison.'}</p> 603<div class="bar"><i class="on"></i><i></i><i></i></div> 604<div data-s="1"><div class="q">What are you building?</div><div class="opts">${WHAT.map(w=>`<button type="button" class="opt${L.what===w[0]?' on':''}" data-what="${w[0]}">${ICON(w[2])}<span>${w[1]}</span></button>`).join('')}</div></div> 605<div data-s="2" hidden><div class="q">How big, and when?</div><div class="chipset" data-group="area">${AREAS.map(a=>`<button type="button" data-area="${a[1]}">${a[0]}<small>${a[2]}</small></button>`).join('')}</div> 606<label>Or the exact area<span class="unitrow"><input type="number" min="1" step="1" data-f="area" placeholder="e.g. 4,500"><select data-f="unit" aria-label="Unit"><option value="m2">m²</option><option value="sqft">sq ft</option></select></span></label> 607<div data-f-areaerr></div> 608${placeFields(L)} 609<div class="q" style="margin-top:12px">When do you want to start?</div><div class="chipset" data-group="when">${WHENS.map(w=>`<button type="button" data-when="${w[1]}">${w[0]}</button>`).join('')}</div> 610<div class="act"><button type="button" class="linkbtn" data-back>Back</button><button type="button" class="btn solid" data-next>Next</button></div></div> 611<div data-s="3" hidden><div class="q">Where should we send your estimate?</div> 612<div class="row"><label>Name <span class="req">*</span><input data-f="name" autocomplete="name" placeholder="Your full name" value="${esc(L.name||'')}"></label><label>Mobile / WhatsApp <span class="req">*</span><input data-f="phone" type="tel" autocomplete="tel" placeholder="+91 98450 00000" value="${esc(L.phone||'')}"></label></div> 613<div class="row"><label>Email <span class="req">*</span><input data-f="email" type="email" autocomplete="email" placeholder="[email protected]" value="${esc(L.email||'')}"></label><label>Company <span class="req">*</span><input data-f="company" autocomplete="organization" placeholder="Company, or Individual" value="${esc(L.company||'')}"></label></div> 614<div class="err" data-err role="alert"></div> 615<div class="act"><button type="button" class="linkbtn" data-back>Back</button><button type="button" class="btn solid" data-send>Show my estimate</button></div> 616<p class="fine">We use these details to reply to this enquiry, as our <a href="#privacy">Privacy Policy</a> explains. No spam, and we never sell your data.</p></div> 617<div data-s="4" hidden></div></div>`} 618function qsShow(root,n){root.dataset.step=n;root.querySelectorAll('[data-s]').forEach(s=>s.hidden=s.dataset.s!=String(n));root.querySelectorAll('.bar i').forEach((b,i)=>b.classList.toggle('on',i<Math.min(n,3)))} 619function qsEstimate(L){const W=WHAT.find(w=>w[0]===L.what)||WHAT[7];const i={finish:W[3].finish,veh:W[3].veh,area:+L.area||1000,soil:'5',rain:'mod',terrain:W[0]==='road'?'road':'flat',perm:W[3].finish==='stone'?'yes':'no'};return {i,r:firstCut(i)}} 620function qsDone(root){const L=lead();const {r}=qsEstimate(L);const s=SYS.find(x=>x.code===r.rec)||SYS[0];const first=(L.name||'').split(' ')[0]; 621 root.querySelector('[data-s="4"]').innerHTML=`<div class="okmark">â</div><div class="q">Thank you${first?', '+esc(first):''}. Your indicative estimate:</div> 622 <p style="margin:4px 0"><b style="font-family:var(--display);font-size:17px">${r.rec} ${s.name}</b></p> 623 <p class="small" style="color:var(--ink2);margin:2px 0">${r.total?`<b>${r.total}</b> installed, indicative · `:''}${r.prod}<br>Opens: ${r.open}</p> 624 <p class="fine">Indicative only; an engineer will call to firm it up. Reference ${L.ref}.</p> 625 <div class="draftnote">${DRAFT_NOTE}<div class="act"><a class="btn solid sm" href="#enquiry">Complete the Project Enquiry</a><a class="linkbtn" href="${waLink('Hello GridMats, reference '+L.ref+'. Sending drawings and photos of my site.')}" target="_blank" rel="noopener">Send documents on WhatsApp</a></div></div>`;qsShow(root,4)} 626function qsSend(root){const f=k=>root.querySelector(`[data-f="${k}"]`);const g=k=>((f(k)||{}).value||'').trim();const L=lead(); 627 L.name=g('name').replace(/\s+/g,' ');L.phone=g('phone');L.email=g('email').toLowerCase();L.company=g('company').replace(/\s+/g,' ');const err=root.querySelector('[data-err]'); 628 if(checkFields([[f('name'),vName(L.name)],[f('phone'),vPhone(L.phone)],[f('email'),vEmail(L.email)],[f('company'),vCompany(L.company)]])){err.textContent='Please correct the fields marked below.';return} 629 err.textContent='';L.ref=L.ref||refNo();L.stage=Math.max(L.stage||0,2);L.source=L.source||('Quick estimate · '+root.dataset.qs);saveLead(L);flag('gm_nudged','1');qsDone(root);{const L2=lead();const {i}=qsEstimate(L2);Object.assign(L2,{fin:i.finish,veh:i.veh,soil:i.soil,rain:i.rain,terrain:i.terrain,perm:i.perm});saveLead(L2);sendEstimate(2)} 630 closeNudgeLater()} 631document.addEventListener('click',e=>{const root=e.target.closest('.qs[data-qs]');if(!root)return;const L=lead(); 632 const w=e.target.closest('[data-what]');if(w){L.what=w.dataset.what;saveLead(L);root.querySelectorAll('[data-what]').forEach(b=>b.classList.toggle('on',b===w));qsShow(root,2);return} 633 const a=e.target.closest('[data-area]');
633if(a){L.area=+a.dataset.area;saveLead(L);root.querySelectorAll('[data-area]').forEach(b=>b.classList.toggle('on',b===a));const f=root.querySelector('[data-f="area"]');if(f)f.value='';return} 634 const wh=e.target.closest('[data-when]');if(wh){L.timeline=wh.dataset.when;saveLead(L);root.querySelectorAll('[data-when]').forEach(b=>b.classList.toggle('on',b===wh));return} 635 if(e.target.closest('[data-next]')){const q=k=>root.querySelector(`[data-f="${k}"]`);const v=k=>((q(k)||{}).value||'').trim();const fa=q('area');if(fa&&+fa.value)L.area=toM2(+fa.value,(q('unit')||{}).value); 636 L.city=v('city').replace(/\s+/g,' ');L.state=v('state');L.country=L.state==='Outside India'?v('country'):'India'; 637 const ae=root.querySelector('[data-f-areaerr]');if(ae)ae.innerHTML=vArea(L.area)?`<small class="ferr">${vArea(L.area)}</small>`:''; 638 const bad=checkFields([[q('city'),vPlace(L.city)],[q('state'),vState(L.state)],...(L.state==='Outside India'?[[q('country'),vPlace(L.country,'country')]]:[])]); 639 if(bad||vArea(L.area))return;L.loc=placeText(L);saveLead(L);qsShow(root,3);return} 640 if(e.target.closest('[data-back]')){qsShow(root,Math.max(1,+root.dataset.step-1));return} 641 if(e.target.closest('[data-send]')){qsSend(root)}}); 642// ---- slide-in, phone bar, menu ---- 643function openNudge(){const n=$('#nudge');if(!n)return;n.classList.add('show');flag('gm_nudged','1')} 644function closeNudge(){const n=$('#nudge');if(n)n.classList.remove('show')} 645function closeNudgeLater(){} 646function armNudge(){if(MEM.armed)return;MEM.armed=true; 647 const auto=()=>{if(flag('gm_nudged')||(lead().stage||0)>=2||['enquiry','partners','privacy','terms','cookies','security','accessibility'].includes(currentRoute()))return;openNudge()}; 648 setTimeout(auto,45000); 649 window.addEventListener('scroll',()=>{const f=(scrollY+innerHeight)/Math.max(1,document.documentElement.scrollHeight);if(f>.6&&scrollY>900)auto()},{passive:true}); 650 document.addEventListener('mouseout',e=>{if(!e.relatedTarget&&e.clientY<6)auto()})} 651document.addEventListener('click',e=>{if(e.target.closest('[data-open-qs]')){e.preventDefault();openNudge();return} 652 if(e.target.closest('#nudge .x')){closeNudge();flag('gm_nudged','1');return} 653 const b=e.target.closest('[data-jump]');if(b){const el=document.getElementById(b.dataset.jump);if(el)el.scrollIntoView({behavior:'smooth'});return} 654 const bg=e.target.closest('#burger');if(bg){const m=$('#menu');const o=!m.classList.contains('open');m.classList.toggle('open',o);bg.setAttribute('aria-expanded',String(o));return} 655 const ch=e.target.closest('[data-seek]');if(ch){const v=$('#procVideo');if(v){v.currentTime=+ch.dataset.seek;v.play().catch(()=>{});}return}}); 656// ---- media blocks ---- 657// Round 9u: YouTube videos play here, in a player window, instead of taking the visitor to YouTube (MD, 28 Sep 2026). 658function ytId(u){const m=String(u).match(/(?:youtu\.be\/|[?&]v=|\/shorts\/|\/embed\/)([A-Za-z0-9_-]{11})/);return m?m[1]:''} 659function ytOpen(u,vertical){const id=ytId(u);if(!id)return false;const prev=document.activeElement;const d=document.createElement('div');d.className='ytm'+(vertical?' v':'');d.setAttribute('role','dialog');d.setAttribute('aria-modal','true');d.setAttribute('aria-label','Video player'); 660 d.innerHTML='<div class="ytm-box"><button class="ytm-x" type="button" aria-label="Close the video">Ã</button><iframe src="https://www.youtube-nocookie.com/embed/'+id+'?autoplay=1&rel=0&playsinline=1" title="GridMats video" allow="autoplay; encrypted-media; picture-in-picture; fullscreen" allowfullscreen referrerpolicy="strict-origin-when-cross-origin"></iframe><a class="ytm-yt" href="'+u+'" target="_blank" rel="noopener">Open on YouTube</a></div>'; 661 const close=()=>{d.remove();document.removeEventListener('keydown',key);document.body.classList.remove('ytm-on');if(prev&&prev.focus)prev.focus()};const key=e=>{if(e.key==='Escape')close()}; 662 d.addEventListener('click',e=>{if(e.target===d||e.target.closest('.ytm-x'))close()});document.addEventListener('keydown',key);document.body.appendChild(d);document.body.classList.add('ytm-on');d.querySelector('.ytm-x').focus();return true} 663document.addEventListener('click',e=>{const a=e.target.closest('a.short,a.vcard,a.vmini');if(!a||e.ctrlKey||e.metaKey||e.shiftKey||e.button)return;const u=a.getAttribute('href')||'';if(!/youtube\.com|youtu\.be/.test(u))return;if(ytOpen(u,a.classList.contains('short')||/\/shorts\//.test(u)))e.preventDefault()}); 664function vmini(v){return `<a class="vmini" href="${v.u}" target="_blank" rel="noopener"><img src="${v.i}" alt="" loading="lazy"><div>${v.tag?`<span class="tt">${v.tag}</span>`:''}<b>${v.t}</b><span>${v.s}</span></div></a>`} 665function shortCard(s){return `<a class="short" href="${s.u}" target="_blank" rel="noopener"><img src="${s.i}" alt="" loading="lazy"><span class="c">${s.c}</span>${s.d?`<span class="d">${s.d}</span>`:''}<span class="pl"></span><span class="t">${s.t}<small>YouTube short</small></span></a>`} 666function watchBlock(full){return `<div class="feat"><a class="vcard" href="${PODCAST.u}" target="_blank" rel="noopener"><span class="vimg"><img src="${PODCAST.i}" alt="Dr Prathap B Rao on the Engineering the Everyday podcast"><span class="play"></span></span><span class="vcap"><span class="tt">Podcast · 68 min</span><b>${PODCAST.t}</b><span>${PODCAST.s}</span></span></a> 667<div class="vlist">${VIDEOS.slice(0,full?9:3).map(vmini).join('')}</div></div> 668<h3 style="margin-top:24px">60-second explainers</h3><div class="shorts" style="margin-top:10px">
668${SHORTS.map(shortCard).join('')}</div> 669${full?'':`<p style="margin-top:12px"><a class="btn onimg sm" href="#media">All videos, news and talks</a></p>`}`} 670function related(key){const sh=SHORTS.filter(s=>(s.on||[]).includes(key));const vd=VIDEOS.filter(v=>(v.on||[]).includes(key));if(!sh.length&&!vd.length)return ''; 671 return `<h3 style="margin-top:26px">Watch</h3><div class="grid g2" style="margin-top:10px;align-items:start"><div class="vlist">${vd.map(vmini).join('')||`<a class="vmini" href="#media"><img src="${PODCAST.i}" alt=""><div><span class="tt">Podcast</span><b>${PODCAST.t}</b><span>Godrej Design Lab à The Gyaan Project</span></div></a>`}</div><div class="shorts">${sh.map(shortCard).join('')}</div></div>`} 672function mrow(n){return `<a class="mrow" href="${n.u}" target="_blank" rel="noopener"><span class="md">${n.d||''}</span><span class="mo">${n.o}</span><span class="mt"><span class="tl">${n.t}</span>${n.n?`<small>${n.n}</small>`:''}</span></a>`} 673function processVideo(){const V=GRAVEL_VIDEO;return `<div class="proc"><div><video id="procVideo" src="${V.src}" poster="${V.poster}" muted playsinline loop controls preload="none" aria-label="GridMats gravel road, from bare ground to traffic"></video><p class="small" style="margin-top:6px">Filmed at Garden City University, Bengaluru: a campus road on the 30 mm grid (GP-30) with gravel. Truck yards use the 40 mm heavy-duty grid (OC-HD 40). Sound off by default; turn it on in the player.</p></div> 674<div class="chap">${V.chapters.map((c,i)=>`<button type="button" data-seek="${c[0]}"><span class="n">${i+1}</span><span><b>${c[1]}</b><span>${c[2]}</span></span><time>${Math.floor(c[0]/60)}:${String(Math.floor(c[0]%60)).padStart(2,'0')}</time></button>`).join('')}</div></div>`} 675function bindProcVideo(){const v=$('#procVideo');if(!v)return;const btns=[...document.querySelectorAll('.chap button')]; 676 v.addEventListener('timeupdate',()=>{let k=0;GRAVEL_VIDEO.chapters.forEach((c,i)=>{if(v.currentTime>=c[0])k=i});btns.forEach((b,i)=>b.classList.toggle('on',i===k))}); 677 let userPaused=false,autoPause=false;const still=matchMedia('(prefers-reduced-motion: reduce)').matches; 678 v.addEventListener('pause',()=>{if(autoPause){autoPause=false;return}if(!v.ended)userPaused=true});v.addEventListener('play',()=>{userPaused=false}); 679 if('IntersectionObserver' in window&&!still){const io=new IntersectionObserver(es=>es.forEach(en=>{if(en.isIntersecting){if(!userPaused){v.preload='auto';v.play().catch(()=>{})}}else if(!v.paused){autoPause=true;v.pause()}}),{threshold:.45});io.observe(v)}} 680function beforeAfter(){return `<div class="ba" id="ba" style="--x:50%"><img src="img/before_dirt.webp" alt="Before: a dirt yard that ponded"><img class="aft" src="img/after_gravel.webp" alt="After: the same yard in S2 stone chip"><span class="tg" style="left:12px">Before</span><span class="tg" style="right:12px">After</span><span class="ln"></span><span class="kn">â</span><input type="range" min="0" max="100" value="50" aria-label="Drag to compare before and after"></div>`} 681function bindBA(){const b=$('#ba');if(!b)return;const r=b.querySelector('input');r.addEventListener('input',()=>b.style.setProperty('--x',r.value+'%'))} 682function worldMap(){const W=WORLD;return `<div class="reach"><svg viewBox="0 0 ${W.w} ${W.h}" role="img" aria-label="Map of GridMats offices (${W.pts.filter(p=>p[3]==='hq'||p[3]==='office').map(p=>p[0]).join(', ')}) and channel partners (${W.pts.filter(p=>p[3]!=='hq'&&p[3]!=='office').map(p=>p[0]).join(', ')})"><path class="land" d="${W.d}"/>${W.pts.map(p=>`<circle class="${p[3]==='hq'?'hq':p[3]==='office'?'off':'par'}" cx="${p[1].toFixed(0)}" cy="${p[2].toFixed(0)}" r="${p[3]==='hq'?13:p[3]==='office'?10:9}"/><text x="${(p[1]+p[4]*1.7).toFixed(0)}" y="${(p[2]+p[5]*1.5+7).toFixed(0)}" text-anchor="${p[6]}">${p[0]}</text>`).join('')}</svg><div class="legend"><span><i style="background:var(--red)"></i>GridMats offices</span><span><i style="border:2px solid var(--ink);background:var(--bg)"></i>Channel partners</span></div></div>`} 683function trustStrip(){return `<section class="trust"><div class="wrap"><div><span class="lbl">Trusted on site by</span><img class="logos" src="img/logos_clean.webp" alt="Client logos: ABB, Radiall, JSW, RMZ Ecoworld, Maruti Suzuki, Ajmera, Godrej, GMR, Adani, Brigade, Tata Steel, Aditya Birla Group, Brookfield Properties, RINAC, PGP Glass, Reliance Industries, Bhushan Power & Steel, Garden City University"></div><div class="press"><span class="lbl">As featured in</span>${PRESS_MARKS.slice(0,11).map(p=>`<a href="#media">${p}</a>`).join('')}<a class="more" href="#media">All coverage â</a></div></div></section>`} 684function newsTeaser(n){return `<div class="mlist">${NEWS.filter(x=>['The Hindu','Business Standard','The Financial Express','The New Indian Express','The Better India','Deccan Herald'].includes(x.o)).slice(0,n).map(mrow).join('')}</div>`} 685function socialLinks(sep){return SOCIAL.map(s=>`<a href="${s[1]}" target="_blank" rel="noopener">${s[0]}</a>`).join(sep||'<br>')} 686function pageMedia(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Media</div><h1 style="margin-top:8px">GridMats in the media</h1><p class="lede">Podcasts, news features, talks and recognition since 2016. Every item links to its original source.</p> 687<div class="mnav">${[['m-watch','Podcast and video'],['m-news','News and features'],['m-talks','Talks and LinkedIn'],['m-rec','Recognition'],['m-origins','Where it started, 2016â2021']].map(([id,l])=>`<button type="button" data-jump="${id}">${l}</button>`).join('')}</div> 688<div class="wordmarks">${PRESS_MARKS.map(p=>`<span>${p}</span>`).join('')}</div></div></section> 689<section class="block dark" id="m-watch"><div class="wrap"><p class="kicker">Podcast and video</p><h2>Engineering the Everyday, with Godrej Design Lab</h2>${watchBlock(true)}</div></section> 690<section class="block" id="m-news"><div class="wrap"><p class="kicker">News and features</p><h2>Independent coverage</h2>${`<div class="mlist">${NEWS.map(mrow).join('')}</div>`}</div></section> 691<section class="block soft" id="m-talks"><div class="wrap"><p class="kicker">Talks, interviews and LinkedIn</p><h2>In Dr Prathap B Raoâs words</h2><div class="grid g3" style="margin-top:14px">${TALKS.map(t=>`<a class="card" href="${t.u}" target="_blank" rel="noopener" style="text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:4px"><span class="lbl">${t.o}${t.d?' · '+t.d:''}</span><b style="font-family:var(--display);font-size:16px">${t.t}</b><span class="small">${t.n}</span></a>`).join('')}</div></div></section> 692<section class="block" id="m-rec"><div class="wrap"><p class="kicker">Recognition</p><h2>Patents, awards and listings, with sources</h2><div class="rec">${RECOG.map(r=>`<div class="card"><b>${r.t}</b><span class="small">${r.s}</span>
692${r.u?`<a class="src" href="${r.u}" target="_blank" rel="noopener">Source: ${r.src} â</a>`:`<span class="src none">Certificate on request</span>`}</div>`).join('')}</div></div></section> 693<section class="block soft" id="m-origins"><div class="wrap"><p class="kicker">Where it started</p><h2>PotHoleRaja in the news, 2016â2021</h2><p>GridMats grew out of PotHoleRaja, the civic pothole-repair movement Dr Prathap B Rao founded in 2016. This is the coverage from those years.</p>${`<div class="mlist">${ORIGINS.map(mrow).join('')}</div>`}</div></section> 694<section class="block"><div class="wrap"><div class="grid g2"><div><h3>Follow GridMats</h3><p class="press" style="margin-top:8px">${socialLinks(' ')}</p></div><div><h3>Press, talks and site visits</h3><p>Write to [email protected] with the date, the audience and what you would like to see or discuss.</p></div></div></div></section>${enquiryBand()}`} 695// ---- resources library ---- 696const LIB=[ 697 ['Fliers',[['S1 Cement-treated gravel','Flier · 1 page','files/s1_cement_treated_gravel_A4.pdf'],['S2 Stone chip, gravel, pebble','Flier · 1 page','files/s2_permeable_stone_chip_A4.pdf'],['S3 Grass and soil','Flier · 1 page','files/s3_grass_paver_A4.pdf'],['S4 Honeycomb-finish concrete','Flier · 1 page','files/s4_honeycomb_concrete_A4.pdf'],['S5 Grid in the base under asphalt','Flier · 1 page','files/s5_grid_under_asphalt_A4.pdf'],['S6 Temporary roads and surfaces','Flier · 1 page','files/s6_temporary_roads_A4.pdf'],['Plant roads and truck yards','Application flier','files/plant_roads_yards_A4.pdf'],['Solar and wind parks','Application flier','files/solar_wind_parks_A4.pdf'],['GridMats Solar Walkway','Flier, pilot stage','files/solar_walkway_A4.pdf'],['Pallets and MLP boards','Data sheet flier','files/pallets_mlp_boards_A4.pdf']]], 698 ['Product data',[['Product data sheets','OC-HD 40, OC-LW 40, GP-30, GP-20, TC mats and accessories · 7 pages','files/GridMats_Product_Data_Sheets.pdf'],['Research and test summary','Load tests and the IIT Hyderabad programme · 2 pages','files/GridMats_Research_Summary.pdf'],['Full test reports','Bureau Veritas, Stedrant, IIT Hyderabad; for your consultant','']]], 699 ['Design and specification',[['Typical cross-sections, S1 to S6','Layer schedules and the base table · PDF; DWG on request','files/GridMats_Typical_Cross_Sections.pdf'],['Specification clauses and BoQ items','For tenders · PDF','files/GridMats_Specification_Clauses.pdf'],['Specification clauses, editable','Word file to paste into a tender; sent by email',''],['First-cut calculator','Six questions, instant result','#enquiry']]], 700 ['Installation and quality',[['Installation at a glance: S1 cement-treated gravel','One page · the steps, what you need, when it opens','files/install_s1_cement_treated_gravel.pdf'],['Installation at a glance: S2 stone chip','One page','files/install_s2_stone_chip.pdf'],['Installation at a glance: S3 grass and soil','One page','files/install_s3_grass_and_soil.pdf'],['Installation at a glance: S4 honeycomb-finish concrete','One page','files/install_s4_honeycomb_concrete.pdf'],['Installation at a glance: S5 grid under asphalt','One page','files/install_s5_grid_under_asphalt.pdf'],['Installation at a glance: S6 temporary roads','One page','files/install_s6_temporary_roads.pdf'],['Gravel road, bare ground to traffic','Video, 75 s','https://video.wixstatic.com/video/2a6e23_fe039cbe99fd468a89b5d4860257161b/720p/mp4/file.mp4'],['Installation guide, by email','Sequence, tests and aftercare for your contractor. Ask and we email it to you.','email:installation-guide'],['SOP, hold-point checklists and training','The SOP, the checklists and the method statement for your site; training for your contractorâs team on site for up to 3 days for orders of 2,000 m² or more, once the site is confirmed ready in writing, built into the product rate (one PO); online below that, at no extra cost','order']]], 701 ['Certificates',[['Certificates pack','GreenPro, patent, PCT and the SDG 9 award · PDF, 4 pages','files/GridMats_Certificates.pdf'],['GreenPro certificate','CII, GPGEP277001','
701img/greenpro.webp'],['Patent certificate','Indian Patent 398992, in force from 1 Dec 2021','img/patent.webp'],['PCT publication','WO/2023/100191 on WIPO PATENTSCOPE','https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2023100191'],['Adani Green Talks 2025','SDG 9 award certificate','img/award_cert.webp']]], 702 ['Sustainability',[['Green-building contribution note','IGBC, GRIHA and LEED v4.1 · 2 pages','files/GridMats_Green_Building_Note.pdf'],['Recycled-content declaration','Signed, per supply','']]], 703 ['Partners',[['International partner programme','PDF','files/GridMats_International_Partner_Programme.pdf'],['India partner programme','PDF','files/GridMats_Partner_Programme.pdf'],['Partner checklist','PDF','files/GridMats_Partner_Checklist.pdf'],['Mutual NDA','PDF','files/GridMats_Partner_NDA.pdf']]] 704]; 705function libBlock(){const open=!!flag('gm_docs');return `<h2 id="library" style="margin-top:34px">Resource library</h2><p>Everything a consultant, contractor or buyer asks for, on par with the global makers: fliers, one-page installation sheets, data sheets, cross-sections, tender clauses, certificates and research. Fliers, installation sheets, certificates and the film are open; the technical and partner documents ask for your name, company, email and mobile once per visit${open?', and they are open for you now':''}. Items marked âRequestâ come by email the same working day.</p> 706${(MEM.asked||[]).length?`<div class="gate" role="status"><p style="margin:0"><b>Request received.</b> We will email the installation guide to ${esc(lead().email||'you')}.</p></div>`:''}<div class="gate" id="gate" hidden><h3 id="g_h">The technical documents: tell us who you are, once</h3><p class="small" id="g_p">Name, company, email and mobile. Everything opens for the rest of this visit, and we let you know
706when a document is revised.</p><form class="form" onsubmit="return false"><label>Name<input id="g_name" autocomplete="name"></label><label>Company<input id="g_co" autocomplete="organization"></label><label>Email<input id="g_email" type="email" autocomplete="email" placeholder="[email protected]"></label><label>Mobile / WhatsApp <span class="req">*</span><input id="g_wa" type="tel" autocomplete="tel" placeholder="+91 98450 00000"></label><div class="w" style="display:flex;gap:10px;align-items:center;flex-wrap:wrap"><button class="btn solid" id="g_go" type="button">Open the documents</button><span class="small" role="alert" id="g_err" style="color:var(--red)"></span></div><p class="w small">We use these details to send you the documents and to follow up on your project, as our <a href="#privacy">Privacy Policy</a> explains.</p></form></div> 707<div class="grid g3" style="margin-top:12px">${LIB.map(([cat,items])=>`<div class="card"><h3>${cat}</h3><ul style="list-style:none;padding:0;margin:8px 0 0;display:grid;gap:8px">${items.map(([t,d,f])=>`<li style="display:flex;justify-content:space-between;gap:10px;align-items:flex-start;border-top:1px solid var(--line);padding-top:8px"><span><b style="font-family:var(--display);font-size:14px">${t}</b><br><span class="small">${d}</span></span>${f==='order'?`<span class="small" style="white-space:nowrap;font-weight:600">With your order</span>`:f&&f.startsWith('email:')?((MEM.asked||[]).includes(f)?`<span class="small" style="white-space:nowrap;font-weight:600">Requested</span>`:`<button type="button" class="btn sm" data-gate="${f}">Request</button>`):f&&GATED.includes(f)&&!open?`<button type="button" class="btn sm" data-gate="${f}">Download</button>`:f?`<a class="btn sm" href="${f}" ${f.startsWith('#')?'':'target="_blank" rel="noopener"'}>${f.startsWith('#')?'Open':f.endsWith('.mp4')?'Watch':/\.(jpg|png)$/.test(f)?'View':f.startsWith('http')?'Open':'Download'}</a>`:`<button type="button" class="btn sm" data-open-qs>Request</button>`}</li>`).join('')}</ul></div>`).join('')}</div>`} 708 709const GATED=['files/GridMats_Product_Data_Sheets.pdf', 'files/GridMats_Research_Summary.pdf', 'files/GridMats_Typical_Cross_Sections.pdf', 'files/GridMats_Specification_Clauses.pdf', 'files/GridMats_Green_Building_Note.pdf', 'files/GridMats_International_Partner_Programme.pdf', 'files/GridMats_Partner_Programme.pdf', 'files/GridMats_Partner_Checklist.pdf', 'files/GridMats_Partner_NDA.pdf']; 710document.addEventListener('click',e=>{const g=e.target.closest('[data-gate]');if(g){const p=$('#gate');if(!p)return;MEM.gateDoc=g.dataset.gate;const ask=MEM.gateDoc.startsWith('email:');$('#g_h').textContent=ask?'Request the installation guide: tell us where to send it':'The technical documents: tell us who you are, once';$('#g_p').textContent=ask?'Name, company, email and mobile. We email the guide to you; the SOP and the method statement for your site come with your order.':'Name, company, email and mobile. Everything opens for the rest of this visit, and we let you know
710when a document is revised.';$('#g_go').textContent=ask?'Send the request':'Open the documents';const L0=lead();[['#g_name',L0.name],['#g_co',L0.company],['#g_email',L0.email],['#g_wa',L0.phone]].forEach(([k,v])=>{const i=$(k);if(i&&v&&!i.value)i.value=v});p.hidden=false;p.scrollIntoView({behavior:'smooth',block:'center'});const n=$('#g_name');if(n)n.focus();return} 711 if(e.target.closest('#g_go')){const L=lead();const name=$('#g_name').value.trim(),co=$('#g_co').value.trim(),em=$('#g_email').value.trim(),wa=$('#g_wa').value.trim(); 712 if(checkFields([[$('#g_name'),vName(name)],[$('#g_co'),vCompany(co)],[$('#g_email'),vEmail(em)],[$('#g_wa'),vPhone(wa)]])){$('#g_err').textContent='Please correct the fields marked below.';return} 713 L.name=L.name||name;L.company=L.company||co;L.email=L.email||em;L.phone=L.phone||wa;L.ref=L.ref||refNo();L.source=L.source||'Web Download';L.docs=Array.from(new Set([...(L.docs||[]),MEM.gateDoc].filter(Boolean)));L.stage=Math.max(L.stage||0,1);saveLead(L);flag('gm_docs','1');postLead('download',{ref:L.ref,fullName:name,company:co,email:em,phone:wa,document:(LIB.flatMap(c=>c[1]).find(x=>x[2]===MEM.gateDoc)||[MEM.gateDoc||''])[0],page:currentRoute()}); 714 if(String(MEM.gateDoc||'').startsWith('email:'))MEM.asked=Array.from(new Set([...(MEM.asked||[]),MEM.gateDoc]));render();setTimeout(()=>{const lib=$('#library');if(lib)lib.scrollIntoView();const d=MEM.gateDoc&&document.querySelector('a[href="'+MEM.gateDoc+'"]');if(d){d.classList.add('solid');d.focus()}},60)}}); 715// ---- the three-step enquiry ---- 716const BRIEF_REQUIRED=['typeOfWork','roadCategory','pavementType','desiredSurfaceFinish','timeline']; 717function fld(k,label,type,opt,val){val=val==null?'':val;if(BRIEF_REQUIRED.includes(k)||['projectName','roadLength','roadWidth'].includes(k))label+=' <span class="req">*</span>';if(type==='sel'){const o=opt.map(x=>Array.isArray(x)?x:[x,x]);return `<label>${label}<select data-b="${k}"><option value="">â Select â</option>${o.map(([v,t])=>`<option value="${esc(v)}"${String(val)===String(v)&&val!==''?' selected':''}>${t}</option>`).join('')}</select></label>`} 718 if(type==='area')return `<label class="w">${label}<textarea data-b="${k}" rows="2" placeholder="${opt||''}">${esc(val)}</textarea></label>`; 719 return `<label>${label}<input data-b="${k}" type="${type==='num'?'number':type==='url'?'url':'text'}" placeholder="${opt||''}" value="${esc(val)}"></label>`} 720function whatNext(){return `<div class="card"><h2 class="h3">What happens next</h2><ol style="padding-left:18px;margin:6px 0"><li>An engineer calls to confirm the inputs.</li><li>First-cut design on screen now; our engineers then send the full design, BoQ and cost comparison.</li><li>Site visit if needed, and samples on request.</li><li>Supply on the date agreed with your order; training for your contractorâs team (on site for up to 3 days for orders of 2,000 m² or more once the site is confirmed ready, built into the product rate; online at no extra cost below that) and hold-point QC. The 1-year DLP applies when your team shares project status updates at each hold point.</li></ol><p class="small">Ready to order? <a href="#order">How ordering and payment work</a>. Prefer to talk? Call +91 63626 GMATS (46287) or WhatsApp +91 63626 46287 or +91 81476 84653.</p></div>`} 721function zohoBox(id){return ''} 722function payload(stage){const L=lead(),B=L.brief||{};const W=WHAT.find(w=>w[0]===L.what); 723 const p={ref:L.ref,stage,source:L.source||'Web enquiry',fullName:L.name,company:L.company,email:L.email,mobile:L.phone,projectName:B.projectName||L.loc||'',roadCategory:B.roadCategory||(W?W[3].roadCategory:''),timeline:B.timeline||L.timeline||'',area_sqm:L.area||'',what:W?W[1]:''}; 724 if(L.fc)Object.assign(p,{firstCut:L.fc});Object.keys(B).forEach(k=>{if(B[k]!==''&&B[k]!=null)p[k]=B[k]});p.utm=location.search||'';return p} 725function showPayload(id,stage){} 726function pageEnquiry(){return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠Free estimate</div><h1 style="margin-top:8px">Get your free estimate</h1><p class="lede">Three short steps. Stop after any of them: each step is saved, so our engineers pick up exactly where you left off, with no repeat questions.</p> 727<div class="stepper" id="stepper">${[['Your project','About 1 minute'],['Instant first cut','Six questions, a draft on screen'],['Full project enquiry','For the detailed BoQ, design and report']].map((s,i)=>`<button type="button" data-step="${i+1}"><b>${i+1} · ${s[0]}</b>${s[1]}</button>`).join('')}</div><div id="stepBody" style="margin-top:16px"></div></div></section>`} 728function step1(){const L=lead();return `${skipBox()}<div class="grid g2" style="align-items:start"><form class="form" onsubmit="return false"> 729<label class="w">What are you building?<select id="e_what">${WHAT.map(w=>`<option value="${w[0]}"${L.what===w[0]?' selected':''}>${w[1]}</option>`).join('')}</select></label> 730<label>Area<span class="unitrow"><input id="e_area" type="number" min="1" step="1" value="${L.area||''}" placeholder="e.g. 5000"><select id="e_unit" aria-label="Unit"><option value="m2">m²</option><option value="sqft">sq ft</option></select></span></label> 731<label>Start<select id="e_when">${WHENS.map(w=>`<option value="${w[1]}"${L.timeline===w[1]?' selected':''}>${w[0]}</option>`).join('')}</select></label> 732<div class="w">${placeFields(L,{city:'e_city',state:'e_state',country:'e_country'})}</div> 733<label>Name <span class="req">*</span><input id="e_name" value="${esc(L.name||'')}" autocomplete="name" placeholder="Your full name"></label><label>Mobile / WhatsApp <span class="req">*</span><input id="e_phone" type="tel" value="${esc(L.phone||'')}" autocomplete="tel" placeholder="+91 98450 00000"></label> 734<label>Email <span class="req">*</span><input id="e_email" type="email" value="${esc(L.email||'')}" autocomplete="email" placeholder="[email protected]"></label><label>Company <span class="req">*</span><input id="e_co" value="${esc(L.company||'')}" autocomplete="organization" placeholder="Company, or Individual"></label> 735<div class="w" style="display:flex;gap:10px;flex-wrap:wrap;align-items:center"><button class="btn solid" id="e1go">Save and see my first cut</button><a class="btn" id="e1wa" href="${waLink('Hello GridMats, I would like an estimate for my project.')}" target="_blank" rel="noopener">WhatsApp instead</a><span class="small" role="alert" id="e1err" style="color:var(--red)"></span></div> 736<p class="w small">We use these details to reply to this enquiry, as our <a href="#privacy">Privacy Policy</a> explains. No spam, and we never sell your data.</p></form><div>${whatNext()}${zohoBox('p1')}</div></div>`}
737function step2(){const L=lead();const W=WHAT.find(w=>w[0]===L.what)||WHAT[7];const fin=L.fin||W[3].finish,veh=L.veh||W[3].veh;const sel=(v,o)=>String(v)===String(o)?' selected':''; 738 return `<div class="grid g2" style="align-items:start"><form class="form" onsubmit="return false"><label class="w">Finish you want to see<select id="f_finish">${[['any','Not sure, recommend'],['hard','Hard grey, dust-free'],['stone','Natural stone, permeable'],['green','Green / grass'],['concrete','Concrete look'],['asphalt','We keep an asphalt road'],['temporary','Temporary road or surface']].map(o=>`<option value="${o[0]}"${sel(fin,o[0])}>${o[1]}</option>`).join('')}</select></label> 739<label>Heaviest vehicle every day<select id="f_veh">${[['car','Cars, SUVs'],['lcv','LCV to 7.5 t'],['fire','Fire tender, occasional'],['t2','Trucks to 20 t'],['t3','Trucks 25â28 t'],['mav','Tippers 36â49 t'],['rtg','Over 49 t / special']].map(o=>`<option value="${o[0]}"${sel(veh,o[0])}>${o[1]}</option>`).join('')}</select></label> 740<label>Area, m²<input id="f_area" type="number" min="100" step="100" value="${L.area||5000}"></label> 741<label>Soil<select id="f_soil">${[['5','Silty sand (CBR â 5)'],['3','Clayey silt (CBR â 3)'],['2','Black cotton clay (CBR â 2)'],['8','Sand and gravel (CBR â 8)'],['6','Murrum / laterite (CBR â 6)'],['0','Have a soil report']].map(o=>`<option value="${o[0]}"${sel(L.soil||'5',o[0])}>${o[1]}</option>`).join('')}</select></label> 742<label>Rainfall<select id="f_rain">${[['low','Low, under 750 mm'],['mod','Moderate, 750â1,500 mm'],['high','High, 1,500â2,500 mm'],['vhigh','Very high, over 2,500 mm']].map(o=>`<option value="${o[0]}"${sel(L.rain||'mod',o[0])}>${o[1]}</option>`).join('')}</select></label> 743<label>Terrain<select id="f_terrain">${[['flat','Flat yard / parking'],['road','Road with gentle grades'],['slope','Grades 6â10%'],['emb','Embankment / steep']].map(o=>`<option value="${o[0]}"${sel(L.terrain||'flat',o[0])}>${o[1]}</option>`).join('')}</select></label> 744<label>Permeability needed?<select id="f_perm">${[['no','Not needed'],['yes','Yes, no storm drain']].map(o=>`<option value="${o[0]}"${sel(L.perm||'no',o[0])}>${o[1]}</option>`).join('')}</select></label> 745<div class="w" style="display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:6px"><button class="btn solid" id="e2go">Continue to the design brief</button><button class="btn" id="e2end">Finish here</button><button type="button" class="linkbtn" data-goto="1">Back</button></div></form> 746<div><div class="result" id="fcOut"></div><p class="small" style="margin-top:8px">The first cut uses the same load-class and CBR tables as our design engine, at the product price for your order size. Installed cost varies with local material availability, labour, transport, base design and site conditions.</p><div class="draftnote">${DRAFT_NOTE} Step 3 is that enquiry.</div>${zohoBox('p2')}</div></div>`} 747function step3(){const L=lead();const B=L.brief=L.brief||{};const fcm={S2:'Gravel finish',S3:'Grass / green finish',S4:'CC hexagon finish',S5:'Asphalt finish'};const cbrm={'2':'2-5','3':'2-5','5':'5-10','6':'5-10','8':'5-10','0':''}; 748 const pre={projectName:L.loc||'',timeline:L.timeline||'',roadCategory:(WHAT.find(w=>w[0]===L.what)||[0,0,0,{}])[3].roadCategory||'',desiredSurfaceFinish:L.fc?fcm[L.fc.system]||'To be decided':'',cbr:L.soil!=null?cbrm[L.soil]:''};Object.keys(pre).forEach(k=>{if(B[k]==null||B[k]==='')B[k]=pre[k]});saveLead(L); 749 const set=(g)=>`<fieldset><legend>${g[0]}</legend><div class="form">${g[1].map(f=>fld(f[0],f[1],f[2],f[3],B[f[0]])).join('')}</div></fieldset>`; 750 return `<p><b>Needed for the detailed BoQ, design and report.</b> Fields marked * are required; fill in the rest if you know them, and add links to your supporting documents (drawings, site photos, soil report, levels) or send them on WhatsApp with your reference. It goes straight to the engineer who designs your site.</p>${BRIEF.map(set).join('')} 751<details class="adv"><summary>For engineers and consultants: your existing design (optional)</summary>${BRIEF_ADV.map(set).join('')}</details> 752<div class="err" id="e3err" style="color:var(--red);font-size:13px"></div><div style="display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:14px"><button class="btn solid" id="e3go">Send the project enquiry</button><button type="button" class="linkbtn" data-goto="2">Back</button><span class="saved" id="e3saved" hidden>Saved on this device</span></div>${zohoBox('p3')}`} 753function step4(){const L=lead();return `<div class="grid g2" style="align-items:start"><div class="result"><div class="okmark">â</div><h3>Thank you${L.name?', '+esc(L.name.split(' ')[0]):''}. Your enquiry is with our engineers.</h3><p>Reference <b>${L.ref||'â'}</b>. ${L.fc&&!L.detail?`First cut: <b>${L.fc.system}</b>, ${L.fc.installed||''}.`:''}</p><p>An engineer will call you to confirm the inputs. To add drawings, photos or a soil report, send them on WhatsApp with your reference.</p>${L.brief&&BRIEF_REQUIRED.every(k=>String(L.brief[k]||'').trim())?'':`<div class="draftnote">${DRAFT_NOTE}<div class="act"><button type="button" class="btn solid sm" data-goto="3">Complete the Project Enquiry</button></div></div>`}<p><a class="btn solid" href="${waLink('Hello GridMats, reference '+(L.ref||'')+'. Sending drawings and photos of my site.')}" target="_blank" rel="noopener">Send files on WhatsApp</a> <button type="button" class="btn" data-goto="3">Edit the brief</button></p></div><div>${whatNext()}${zohoBox('p4')}</div></div>`} 754function goStep(n){const L=lead();const max=Math.min(4,(L.stage||1));
754n=Math.max(1,Math.min(n,max));const body=$('#stepBody');if(!body)return; 755 body.innerHTML=[0,step1,step2,step3,step4][n]();document.querySelectorAll('#stepper button').forEach((b,i)=>{b.classList.toggle('on',i+1===n||(n===4&&i===2));b.classList.toggle('done',i+1<n);b.disabled=i+1>max}); 756 if(n===1)bindStep1();if(n===2)bindStep2();if(n===3)bindStep3();if(n===4)showPayload('p4',4)} 757function bindStep1(){showPayload('p1',1);$('#e1skip').addEventListener('click',()=>openDetail('skip'));$('#e1go').addEventListener('click',()=>{const L=lead();L.what=$('#e_what').value;L.area=+$('#e_area').value?toM2(+$('#e_area').value,$('#e_unit').value):(L.area||'');L.timeline=$('#e_when').value;L.city=$('#e_city').value.trim().replace(/\s+/g,' ');L.state=$('#e_state').value;L.country=L.state==='Outside India'?$('#e_country').value.trim():'India';L.loc=placeText(L); 758 L.name=$('#e_name').value.trim().replace(/\s+/g,' ');L.phone=$('#e_phone').value.trim();L.email=$('#e_email').value.trim().toLowerCase();L.company=$('#e_co').value.trim().replace(/\s+/g,' '); 759 if(checkFields([[$('#e_area'),vArea(L.area,true)],[$('#e_city'),vPlace(L.city)],[$('#e_state'),vState(L.state)],...(L.state==='Outside India'?[[$('#e_country'),vPlace(L.country,'country')]]:[]),[$('#e_name'),vName(L.name)],[$('#e_phone'),vPhone(L.phone)],[$('#e_email'),vEmail(L.email)],[$('#e_co'),vCompany(L.company)]])){$('#e1err').textContent='Please correct the fields marked below.';return} 760 $('#e1err').textContent='';delete L.detail; 761 L.ref=L.ref||refNo();L.source=L.source||'Free estimate page';L.stage=Math.max(L.stage||0,2);saveLead(L);flag('gm_nudged','1');sendEstimate(1);goStep(2)})} 762function bindStep2(){const upd=()=>{const L=lead();L.fin=$('#f_finish').value;L.veh=$('#f_veh').value;L.area=+$('#f_area').value;L.soil=$('#f_soil').value;L.rain=$('#f_rain').value;L.terrain=$('#f_terrain').value;L.perm=$('#f_perm').value; 763 const i={finish:L.fin,veh:L.veh,area:L.area,soil:L.soil,rain:L.rain,terrain:L.terrain,perm:L.perm};const r=firstCut(i);const s=SYS.find(x=>x.code===r.rec)||SYS[0]; 764 L.fc={system:r.rec,name:s.name,product:r.prod,installed:r.total||r.range,opens:r.open,esg:r.esg,alternatives:r.alt,loadClass:r.cls};delete L.detail;saveLead(L); 765 $('#fcOut').innerHTML=`<p class="kicker">First cut${L.company?' for '+esc(L.company):''}</p><b class="big">${r.rec} ${s.name}</b><p>${s.line}.</p><p><b>Product:</b> ${r.prod} ex-GST, ex-freight<br><b>Installed:</b> ${r.range}${r.total?' ('+r.total+')':''}<br><b>Opens:</b> ${r.open}<br><b>ESG:</b> ${r.esg}</p><p class="small">Also possible: ${r.alt.join(', ')||'â'}. Load class ${r.cls}.</p><p><a class="btn sm" href="#${s.slug}">About ${r.rec}</a>${s.flier?` <a class="btn sm" href="${s.flier}" target="_blank" rel="noopener">Flier (PDF)</a>`:''}</p>`;showPayload('p2',2)}; 766 ['f_finish','f_veh','f_area','f_soil','f_rain','f_terrain','f_perm'].forEach(id=>$('#'+id).addEventListener('input',upd));upd(); 767 $('#e2go').addEventListener('click',()=>{const L=lead();L.stage=Math.max(L.stage,3);saveLead(L);sendEstimate(2);goStep(3)}); 768 $('#e2end').addEventListener('click',()=>{const L=lead();L.stage=4;saveLead(L);sendEstimate(2);goStep(4)})} 769function bindStep3(){showPayload('p3',3);const body=$('#stepBody');body.addEventListener('input',e=>{const el=e.target.closest('[data-b]');if(!el)return;const L=lead();L.brief=L.brief||{};L.brief[el.dataset.b]=el.value;saveLead(L);const sv=$('#e3saved');if(sv)sv.hidden=false;showPayload('p3',3)}); 770 $('#e3go').addEventListener('click',()=>{const L=lead();const B=L.brief||{};const el=k=>document.querySelector(`[data-b="${k}"]`); 771 const num=(k,lo,hi,req)=>{const t=String(B[k]||'').trim();if(!t)return req?'Required.':'';const n=+t;return isFinite(n)&&n>=lo&&n<=hi?'':`Enter a number from ${lo} to ${hi.toLocaleString('en-IN')}.`}; 772 const pairs=BRIEF_REQUIRED.map(k=>[el(k),String(B[k]||'').trim()?'':'Required.']); 773 pairs.push([el('projectName'),String(B.projectName||'').trim()&&junk(B.projectName)?'Please describe the project.':(String(B.projectName||'').trim()?'':'Required.')]); 774 pairs.push([el('roadLength'),num('roadLength',1,100000,true)],[el('roadWidth'),num
774('roadWidth',1,500,true)],[el('cvpd'),num('cvpd',0,100000)],[el('crossSlope'),num('crossSlope',0,60)],[el('longGradient'),num('longGradient',0,60)]); 775 ['sitePhotosLink','soilTestReportLink','siteDrawingsLink','topoDrawingLink','levelsLink','drainageDocsLink','expectedPhotosLink','existingSketchLink','additionalDocsLink'].forEach(k=>pairs.push([el(k),vUrl(B[k])])); 776 if(checkFields(pairs)){$('#e3err').textContent='Please complete or correct the fields marked below.';return} 777 L.stage=4;saveLead(L);sendEstimate(3);goStep(4)})} 778function bindEnquiry(){const L=lead();document.getElementById('stepper').addEventListener('click',e=>{const b=e.target.closest('[data-step]');if(b&&!b.disabled)goStep(+b.dataset.step)}); 779 $('#stepBody').addEventListener('click',e=>{const g=e.target.closest('[data-goto]');if(g)goStep(+g.dataset.goto)}); 780 const rf=String(new URLSearchParams(location.search).get('ref')||'').trim().toUpperCase();MEM.refIn=/^GM-\d{6}-[A-Z0-9]{4}$/.test(rf)?rf:''; 781 if(!MEM.briefHash){MEM.briefHash=1;window.addEventListener('hashchange',()=>{if(location.hash==='#project-brief'&&$('#stepBody'))openDetail('link')})} 782 if(location.hash==='#project-brief'){openDetail('link');return} 783 goStep(L.stage>=4?4:L.stage>=3?3:L.stage>=2?2:1)} 784 785// ---- the detailed enquiry: contact block + design brief in one form (MD, 29 Sep 2026) ---- 786function skipBox(){return `<div class="skipbox"><p style="margin:0"><b>Have your drawings and project details ready?</b> Skip the first cut and send the full details for a BoQ and detailed design.</p><button type="button" class="btn sm" id="e1skip">Send the full details</button></div>`} 787function briefFields(){const L=lead();const B=L.brief=L.brief||{};const pre={projectName:L.loc||'',timeline:L.timeline||'',roadCategory:(WHAT.find(w=>w[0]===L.what)||[0,0,0,{}])[3].roadCategory||''}; 788 Object.keys(pre).forEach(k=>{if(B[k]==null||B[k]==='')B[k]=pre[k]});saveLead(L); 789 const set=(g)=>`<fieldset><legend>${g[0]}</legend><div class="form">${g[1].map(f=>fld(f[0],f[1],f[2],f[3],B[f[0]])).join('')}</div></fieldset>`; 790 return `${BRIEF.map(set).join('')}<details class="adv"><summary>For engineers and consultants: your existing design (optional)</summary>${BRIEF_ADV.map(set).join('')}</details>`} 791function briefChecks(B){const el=k=>document.querySelector(`[data-b="${k}"]`); 792 const num=(k,lo,hi,req)=>{const t=String(B[k]||'').trim();if(!t)return req?'Required.':'';const n=+t;return isFinite(n)&&n>=lo&&n<=hi?'':`Enter a number from ${lo} to ${hi.toLocaleString('en-IN')}.`}; 793 const pairs=BRIEF_REQUIRED.map(k=>[el(k),String(B[k]||'').trim()?'':'Required.']); 794 pairs.push([el('projectName'),String(B.projectName||'').trim()&&junk(B.projectName)?'Please describe the project.':(String(B.projectName||'').trim()?'':'Required.')]); 795 pairs.push([el('roadLength'),num('roadLength',1,100000,true)],[el('roadWidth'),num('roadWidth',1,500,true)],[el('cvpd'),num('cvpd',0,100000)],[el('crossSlope'),num('crossSlope',0,60)],[el('longGradient'),num('longGradient',0,60)]); 796 ['sitePhotosLink','soilTestReportLink','siteDrawingsLink','topoDrawingLink','levelsLink','drainageDocsLink','expectedPhotosLink','existingSketchLink','additionalDocsLink'].forEach(k=>pairs.push([el(k),vUrl(B[k])]));return pairs} 797function stepDetail(){const L=lead();const ref=MEM.refIn||''; 798 return `<div id="project-brief"><p class="kicker">Full project enquiry</p><h2 class="h3" style="margin-top:4px">Your details and the design brief, in one form</h2> 799<p>For the detailed BoQ, design and report. Fields marked * are required; add links to your drawings, site photos, soil report or levels if you have them, or send them on WhatsApp with your reference.${ref?` Reference <b>${esc(ref)}</b>, from our earlier conversation.`:''}</p> 800<fieldset><legend>Your details</legend><div class="form"><label class="w">What are you building? <span class="req">*</span><select id="d_what">${WHAT.map(w=>`<option value="${w[0]}"${L.what===w[0]?' selected':''}>${w[1]}</option>`).join('')}</select></label> 801<label>Name <span class="req">*</span><input id="d_name" value="${esc(L.name||'')}" autocomplete="name" placeholder="Your full name"></label><label>Mobile / WhatsApp <span class="req">*</span><input id="d_phone" type="tel" value="${esc(L.phone||'')}" autocomplete="tel" placeholder="+91 98450 00000"></label> 802<label>Email <span class="req">*</span><input id="d_email" type="email" value="${esc(L.email||'')}" autocomplete="email" placeholder="[email protected]"></label><label>Company <span class="req">*</span><input id="d_co" value="${esc(L.company||'')}" autocomplete="organization" placeholder="Company, or Individual"></label> 803<div class="w">${placeFields(L,{city:'d_city',state:'d_state',country:'d_country'})}</div></div></fieldset> 804${briefFields()} 805<div class="err" id="d_err" style="color:var(--red);font-size:13px"></div><div style="display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:14px"><button class="btn solid" id="d_go">Send the project enquiry</button><button type="button" class="linkbtn" data-goto="1">Prefer the quick first cut? Start with step 1</button><span class="saved" id="d_saved" hidden>Saved on this device</span></div> 806<p class="small">We use these details to reply to this enquiry, as our <a href="#privacy">Privacy Policy</a> explains. No spam, and we never sell your data.</p></div>`} 807function openDetail(mode){MEM.detail=mode;const body=$('#stepBody');if(!body)return;body.innerHTML=stepDetail();const L=lead(); 808 document.querySelectorAll('#stepper button').forEach((b,i)=>{b.classList.toggle('on',i===2);b.classList.remove('done');b.disabled=i===1&&(L.stage||1)<2});bindDetail()} 809function bindDetail(){const body=$('#stepBody'); 810 body.addEventListener('input',e=>{const el=e.target.closest('[data-b]');if(!el)return;const L=lead();L.brief=L.brief||{};L.brief[el.dataset.b]=el.value;saveLead(L);const sv=$('#d_saved');if(sv)sv.hidden=false}); 811 $('#d_go').addEventListener('click',()=>{const L=lead();const B=L.brief=L.brief||{}; 812 L.what=$('#d_what').value;L.city=$('#d_city').value.trim().replace(/\s+/g,' ');L.state=$('#d_state').value;L.country=L.state==='Outside India'?$('#d_country').value.trim():'India';L.loc=placeText(L); 813 L.name=$('#d_name').value.trim().replace(/\s+/g,' ');L.phone=$('#d_phone').value.trim();L.email=$('#d_email').value.trim().toLowerCase();L.company=$('#d_co').value.trim().replace(/\s+/g,' '); 814 const pairs=[[$('#d_name'),vName(L.name)],[$('#d_phone'),vPhone(L.phone)],[$('#d_email'),vEmail(L.email)],[$('#d_co'),v
814Company(L.company)],[$('#d_city'),vPlace(L.city)],[$('#d_state'),vState(L.state)],...(L.state==='Outside India'?[[$('#d_country'),vPlace(L.country,'country')]]:[]),...briefChecks(B)]; 815 if(checkFields(pairs)){$('#d_err').textContent='Please complete or correct the fields marked below.';return} 816 $('#d_err').textContent=''; 817 // the link's reference attaches to that enquiry; a link without one starts a new enquiry; skipping keeps this visit's 818 L.ref=MEM.refIn||(MEM.detail==='link'?refNo():(L.ref||refNo()));L.detail=MEM.detail==='link'?'link':'skip'; 819 L.source=L.detail==='link'?'Detailed enquiry (direct link)':'Detailed enquiry (skipped first cut)';L.stage=4;saveLead(L);flag('gm_nudged','1'); 820 if(typeof sendEstimate==='function')sendEstimate(3);goStep(4)})} 821 822// ---- router ---- 823function smartTiles(except){return `<div class="grid g4">${SMART.filter(p=>p.slug!==except).map(p=>`<a class="card" href="#${p.slug}" style="text-decoration:none;color:inherit"><img class="thumb" src="${p.img}" alt="" style="${p.fit?'object-fit:contain;background:#fff':''}"><b style="font-family:var(--display)">${p.name}</b><br><span class="small">${p.tag}</span></a>`).join('')}</div>`} 824function pageSmart(p){const wa='https://wa.me/916362646287?text='+encodeURIComponent('Hello GridMats, '+p.wa+'.');return `<section class="block"><div class="wrap"><div class="crumb"><a href="#home">Home</a> ⺠<a href="#systems">Systems & products</a> ⺠${p.name}</div><div class="hero" style="padding-block:18px"><div><p class="kicker">${p.name} · ${p.tag}</p><h1>${p.line}</h1><p class="lede">${p.what}</p><p><a class="btn solid" href="${wa}" target="_blank" rel="noopener">Ask on WhatsApp</a> <a class="btn" href="#contact">Contact sales</a>${p.flier?` <a class="btn" href="${p.flier}" target="_blank" rel="noopener">Flier (PDF)</a>`:''}</p></div><div><img src="${p.img}" alt="${p.cap}" style="aspect-ratio:16/10;${p.fit?'object-fit:contain;background:#fff':''}"><p class="small">${p.cap}</p></div></div> 825<div class="grid g2" style="margin-top:8px"><div><h3>Where it is used</h3>${p.uses.map(u=>`<p><b>${u[0]}.</b> ${u[1]}</p>`).join('')}</div><div><h3>Specifications</h3><div class="tbl"><table style="min-width:0">${p.specs.map(r=>`<tr><th style="width:34%">${r[0]}</th><td>${r[1]}</td></tr>`).join('')}</table></div><p class="small" style="margin-top:8px">${p.price} Figures from GridMats product data; confirm them for your project.</p></div></div> 826${p.steps?`<h3 style="margin-top:22px">${p.stepsTitle||'How it works'}</h3><ol style="padding-left:18px">${p.steps.map(x=>`<li>${x}</li>`).join('')}</ol>`:''} 827${p.gallery.length?`<h3 style="margin-top:26px">Pictures</h3><div class="gallery" style="margin-top:8px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))">${p.gallery.map(g=>`<figure><img src="${g[0]}" alt="" style="${g[2]?'object-fit:contain;background:#fff':''}"><figcaption>${g[1]}</figcaption></figure>`).join('')}</div>`:''} 828${related(p.slug)}<h3 style="margin-top:26px">More from GridMats</h3><div style="margin-top:8px">${smartTiles(p.slug)}</div></div></section>${enquiryBand()}`} 829function render(){const h=currentRoute();let html='';let p=h;let jump=''; 830 const s=SYS.find(x=>x.slug===h);const a=APPS.find(x=>x.slug===h);const sm=SMART.find(x=>x.slug===h);const c=h.startsWith('case-')?CASES.find(x=>x.id===h.slice(5)):null; 831 if(h==='home')html=pageHome();else if(h==='systems')html=pageSystems();else if(s){html=pageSystem(s);p='systems'}else if(h==='applications')html=pageApplications();else if(a){html=pageApp(a);p='applications'}else if(h==='products'){html=pageSystems();p='systems';jump='catalogue'}else if(h==='finder'){html=pageSystems();p='systems';jump='find-system'}else if(sm){html=pageSmart(sm);p='systems'}else if(h==='projects')html=pageProjects();else if(c){html=pageCase(c);p='projects'}else if(h==='engineering')html=pageEngineering();else if(h==='about'){html=pageAbout();p='about'}else if(h==='partners'){html=pagePartners();p='about'}else if(h==='contact')html=pageContact();else if(h==='media')html=pageMedia();else if(h==='enquiry')html=pageEnquiry();else if(h==='order'){html=pageOrder();p='contact'}else if(h==='privacy'){html=pagePrivacy();p='contact'}else if(h==='terms'){html=pageTerms();
831p='contact'}else if(h==='cookies'){html=pageCookies();p='contact'}else if(h==='security'){html=pageSecurity();p='contact'}else if(h==='accessibility'){html=pageAccessibility();p='contact'}else if(h==='glossary'){html=pageGlossary();p='engineering'}else{html=pageHome();p='home'} 832 $('#app').innerHTML=addSqft(html);linkify($('#app'));document.querySelectorAll('#menu a').forEach(x=>x.classList.toggle('on',x.dataset.p===p)); 833 $('#menu').classList.remove('open');$('#burger').setAttribute('aria-expanded','false');a11y($('#app'));if(h==='home'||h==='s2')bindProcVideo();if(h==='s2')bindBA(); 834 if(h==='enquiry')bindEnquiry();if(h==='partners')bindPartners();if(h==='order')bindOrder();if(h==='systems'||h==='products'||h==='finder')bindFinder();a11y($('#app'));window.scrollTo({top:0});if(jump){const el=document.getElementById(jump);if(el)el.scrollIntoView();}else{const an=(location.hash||'').slice(1);const el=an&&!PAGE_FILE[an]&&document.getElementById(an);if(el)el.scrollIntoView();} 835 document.title=({home:'Sustainable Road Materials: Recycled-Plastic Roads, Yards and Parking | GridMats®',systems:'Systems, products and prices · GridMats',applications:'Applications by industry · GridMats',projects:'Projects and case studies · GridMats',engineering:'Resources, datasheets and downloads · GridMats',about:'About GridMats',partners:'Channel partners · GridMats',contact:'Contact GridMats',media:'Media, press and videos · GridMats',enquiry:'Get your free estimate · GridMats',order:'Order and pay · GridMats',privacy:'Privacy Policy · GridMats',terms:'Terms and Conditions · GridMats',cookies:'Cookie Policy · GridMats',security:'Security · GridMats',accessibility:'Accessibility · GridMats',glossary:'Terms we use: a plain-English glossary · GridMats'})[h]||((s?s.code+' '+s.name:a?a.name+' roads and yards':sm?sm.name:c?c.title+' case study':h[0].toUpperCase()+h.slice(1))+' · GridMats');} 836document.addEventListener('click',e=>{const a=e.target.closest&&e.target.closest('[data-cookie-settings]');if(!a)return;e.preventDefault();if(window.gmConsentOpen)window.gmConsentOpen();else location.hash='#cookies'}); 837document.addEventListener('click',e=>{const k=e.target.closest&&e.target.closest('a.skip');if(!k)return;e.preventDefault();const m=$('#app');if(m){m.focus();m.scrollIntoView()}}); 838document.addEventListener('keydown',e=>{if(e.key!=='Escape')return;const n=$('#nudge');if(n&&n.classList.contains('show')){closeNudge();return}const m=$('#menu');if(m&&m.classList.contains('open')){m.classList.remove('open');const bg=$('#burger');bg.setAttribute('aria-expanded','false');bg.focus()}}); 839a11y(document.body); 840buildPages();if(!legacyHash()){window.addEventListener('hashchange',onHash);linkify(document);if(!document.body.dataset.static)render();flushOutbox();new MutationObserver(ms=>ms.forEach(m=>m.addedNodes.forEach(n=>{if(n.nodeType===1&&n.parentNode)linkify(n.parentNode)}))).observe(document.body,{childList:true,subtree:true});}$('#nudgeBody').innerHTML=qsCard('slide','Get a free estimate','Three quick taps. An indicative price on screen now; the full design and cost comparison from our engineers.');armNudge();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.