{"schema":"singularity.program-execution-image.v10","version":"15","runtime":{"abi":"singularity.program-runtime.v1","securityPolicy":"singularity.execution-security.v1"},"posture":"aeecc0551e810aab","identity":{"id":"program:9c92aa127ed1181c","contractId":"program-contract:6116671adb7262e8","resourceContractId":"program-resource-contract:b4bba1eb2af51601","environment":"world-contract:6c89d0076188b641","selectedEnvironment":"world-contract:f9b80e739f33df29","references":"references:d95f47745101faea","capabilityIR":"ir:c75ab8d640c4fdd4","operations":"operations:44ecf544d550ebfa","problems":"problem-catalog:8f08053776166309","sources":{"formEmail":"source:0e1d5d96e35ed4c0","opehub":"source:562a17210b9ea3a7","opehubLeads":"source:b9c2608facb129a9"}},"worlds":{"construction":"world-contract:6c89d0076188b641","selected":"world-contract:f9b80e739f33df29"},"products":{"expressions":{"nodes":[["root","$f19e640e$loading"],["unary","!",0],["root","$fea3d570$shown"],["literal",0],["binary","==",2,3],["binary","&&",1,4],["root","coBusy"],["unary","!",6],["root","fx"],["literal","contact"],["member",8,9,true],["literal","busy"],["member",10,11,true],["unary","!",12],["literal","inventory"],["member",8,14,true],["literal","loaded"],["member",15,16,true],["unary","!",17],["root","state"],["member",19,14,true],["call","count",[20]],["binary","==",21,3],["binary","&&",18,22],["literal",""],["binary","!=",24,24],["literal","Questions about a machine, a repair or a part? Send a note or call the shop and we’ll lay out clear next steps."],["binary","!=",26,24],["literal","Reserve machines online and pick them up at the shop. We confirm availability and contact you before you head over — no payment is taken here."],["binary","!=",28,24],["literal","co-email"],["literal","-error"],["binary","+",30,31],["literal","co-name"],["binary","+",33,31],["literal","co-phone"],["binary","+",35,31],["literal","ct-email"],["binary","+",37,31],["literal","ct-msg"],["binary","+",39,31],["literal","ct-name"],["binary","+",41,31],["literal","ct-phone"],["binary","+",43,31],["literal","ct-topic"],["binary","+",45,31],["root","$0dba007c$sold"],["literal","Sold"],["root","$8f776bc1$inCart"],["literal","Update pickup order"],["literal","Add to cart for pickup"],["ternary",49,50,51],["ternary",47,48,52],["root","$1841b2b5$resources"],["root","$1ad1f1a3$showCash"],["literal","Price"],["ternary",55,56,56],["root","$36b1e3e5$pickIds"],["root","$3fd7463d$mainThumb"],["root","$45bdb4eb$promoSrcset"],["root","$476d6689$sorted"],["root","$4c4ea828$img"],["binary","!=",62,24],["binary","==",62,24],["root","$4d90eda5$href"],["root","$5f14c0d2$cartCount"],["binary",">",66,3],["root","$62bb71b0$showCash"],["ternary",68,56,56],["root","$67caf199$addOnTotal"],["root","$72deba9a$specGroups"],["root","$86d9dbdf$missing"],["root","$a04de202$catName"],["binary","!=",73,24],["literal","Machines on the lot"],["ternary",74,73,75],["literal","Showing "],["binary","+",77,73],["literal",". Every listing is priced, and pickup orders are confirmed by the shop."],["binary","+",78,79],["literal","Walk-behinds, zero-turns and more, priced and ready to reserve for pickup at the shop."],["ternary",74,80,81],["root","$a12bcf1c$subtitle"],["binary","!=",83,24],["root","$aa7eee53$promoIds"],["root","$ac3be46c$filtered"],["root","$b5f034f9$promoImgMobile"],["root","$b725ab29$promoName"],["binary","!=",88,24],["root","$c0919d8e$query"],["binary","==",90,24],["root","$cfd369fc$byCond"],["literal","name"],["call","searchBy",[92,93,90]],["ternary",91,92,94],["root","$c50d6868$mainImg"],["binary","!=",96,24],["root","$c8d4384c$moreLike"],["root","$cabe0061$addOnList"],["root","$cb385c89$promoImg"],["root","$d0a77e9d$img"],["binary","!=",101,24],["binary","==",101,24],["root","$e7a4f01e$mediaList"],["root","$eaf1c826$promoName"],["binary","!=",105,24],["literal","Special offer"],["ternary",106,105,107],["root","$eb2c9783$features"],["literal","Loading inventory…"],["literal"," "],["binary","+",2,111],["literal","machine"],["call","pluralize",[2,113]],["binary","+",112,114],["root","route"],["literal","query"],["member",116,117,true],["literal","promotion"],["member",118,119,true],["binary","??",120,24],["binary","!=",121,24],["literal"," with this offer"],["ternary",122,123,24],["binary","+",115,124],["ternary",0,110,125],["root","$f1c1e581$activeImg"],["binary","!=",127,24],["binary","==",127,96],["literal","true"],["literal","false"],["ternary",129,130,131],["binary","==",127,24],["root","m"],["literal","mediaFile"],["member",134,135,true],["literal","urls"],["member",136,137,true],["literal","page"],["member",138,139,true],["binary","==",127,140],["ternary",141,130,131],["root","$f1e68f28$catName"],["binary","!=",143,24],["literal","Same category"],["ternary",144,143,145],["root","$f5a43fe2$adjList"],["root","$fe22776a$promoDesc"],["binary","!=",148,24],["binary",">",2,3],["literal","$"],["root","invRows"],["literal","id"],["literal","params"],["member",116,154,true],["member",155,153,true],["call","findBy",[152,153,156]],["literal","cashPrice"],["member",157,158,false],["binary","??",159,3],["call","round",[160]],["call","thousands",[161]],["binary","+",151,162],["literal","price"],["member",157,164,false],["call","round",[165]],["call","thousands",[166]],["binary","+",151,167],["binary","+",165,70],["call","round",[169]],["call","thousands",[170]],["binary","+",151,171],["literal","finance.payment"],["call","get",[157,173,3]],["binary","??",174,3],["call","round",[175]],["call","thousands",[176]],["binary","+",151,177],["root","row"],["call","get",[179,173,3]],["binary","??",180,3],["call","round",[181]],["call","thousands",[182]],["binary","+",151,183],["member",179,158,true],["binary","??",185,3],["call","round",[186]],["call","thousands",[187]],["binary","+",151,188],["root","ao"],["literal","payment"],["member",190,191,true],["call","round",[192]],["call","thousands",[193]],["binary","+",151,194],["literal","/mo est."],["binary","+",195,196],["root","cartSubtotal"],["call","round",[198]],["call","thousands",[199]],["binary","+",151,200],["root","it"],["member",202,164,true],["literal","addOnTotal"],["member",202,204,true],["binary","+",203,205],["call","round",[206]],["call","thousands",[207]],["binary","+",151,208],["member",179,164,true],["call","round",[210]],["call","thousands",[211]],["binary","+",151,212],["literal","disclosure"],["member",19,214,true],["member",215,191,true],["call","round",[216]],["call","thousands",[217]],["binary","+",151,218],["literal","/mo"],["binary","+",219,220],["literal","+ "],["literal","addOnCount"],["member",202,223,true],["binary","+",222,224],["binary","+",225,111],["literal","add-on"],["call","pluralize",[224,227]],["binary","+",226,228],["literal"," · $"],["binary","+",229,230],["call","round",[205]],["call","thousands",[232]],["binary","+",231,233],["literal","/inventory/"],["member",202,153,true],["binary","+",235,236],["member",179,153,true],["binary","+",235,238],["literal","/inventory?category="],["literal","wholegood"],["member",157,241,false],["literal","categoryId"],["member",242,243,false],["binary","+",240,244],["root","cat"],["member",246,153,true],["binary","+",240,247],["literal","/inventory?promotion="],["root","pid"],["binary","+",249,250],["root","set"],["literal","promoId"],["member",252,253,true],["binary","+",249,254],["literal","Call "],["root","locPhone"],["call","opehub__formatPhone",[257]],["binary","+",256,258],["literal","Current offer"],["root","$21c499e2$promoEnds"],["binary","!=",261,24],["literal"," · ends "],["literal","MMM DD, YYYY"],["call","formatDate",[261,264]],["binary","+",263,265],["ternary",262,266,24],["binary","+",260,267],["literal","Ends "],["member",252,119,true],["literal","ends"],["member",270,271,true],["literal","MMM DD"],["call","formatDate",[272,273]],["binary","+",269,274],["literal","Machine + "],["call","count",[58]],["binary","+",276,277],["binary","+",278,111],["call","pluralize",[277,227]],["binary","+",279,280],["literal","Offer · ends "],["literal","promotions"],["member",19,283,true],["call","findBy",[284,153,250]],["call","get",[285,271,24]],["binary","??",286,24],["call","formatDate",[287,273]],["binary","+",282,288],["literal","Pickup cart"],["literal"," ("],["binary","+",291,66],["literal",")"],["binary","+",292,293],["ternary",67,294,24],["binary","+",290,295],["literal","Pickup cart, "],["binary","+",297,66],["binary","+",298,111],["literal","item"],["call","pluralize",[66,300]],["binary","+",299,301],["literal","Remove "],["member",202,93,true],["binary","+",303,304],["literal","Shop "],["literal","inventoryCount"],["member",270,307,true],["binary","+",306,308],["binary","+",309,111],["call","pluralize",[308,113]],["binary","+",310,311],["literal","Show photo "],["root","mi"],["literal",2],["binary","+",314,315],["binary","+",313,316],["literal","Thanks, "],["literal","contactSent"],["member",19,319,true],["binary","+",318,320],["literal",". Your message is on its way."],["binary","+",321,322],["literal","orderSent"],["member",19,324,true],["member",325,93,true],["binary","+",318,326],["literal",". Your pickup request is in."],["binary","+",327,328],["literal","View details: "],["member",179,93,true],["binary","+",330,331],["literal","We received your request for "],["literal","count"],["member",325,334,true],["binary","+",333,335],["binary","+",336,111],["call","pluralize",[335,113]],["binary","+",337,338],["literal",". The shop will reach out to confirm availability and set a pickup time."],["binary","+",339,340],["literal","cat-"],["member",157,153,false],["binary","+",342,343],["literal","https://www.google.com/maps/dir/?api=1&destination="],["root","locFull"],["literal","+"],["call","replace",[346,111,347]],["binary","+",345,348],["literal","mailto:"],["root","locEmail"],["binary","+",350,351],["literal","tel:"],["binary","+",353,257],["literal","© "],["root","copyrightYear"],["binary","!=",356,24],["binary","+",356,111],["ternary",357,358,24],["binary","+",355,359],["root","dealerName"],["binary","+",360,361],["literal",". All rights reserved."],["binary","+",362,363],["literal","metric"],["member",19,365,true],["unary","!",366],["literal","mui-v-ProductDetail-unitLabel--on"],["ternary",367,368,24],["binary","!=",82,24],["root","$ee11ec3e$ownPhoto"],["literal","mui-v-CategoryTile-frame--photo"],["ternary",371,372,24],["literal","mui-v-CategoryTile-img--photo"],["ternary",371,374,24],["literal","mui-v-ProductDetail-thumb--on"],["ternary",129,376,24],["ternary",141,376,24],["literal","finance"],["member",157,379,false],["literal",null],["binary","!=",380,381],["binary",">",160,3],["binary","&&",382,383],["binary","<",160,165],["binary","&&",384,385],["root","adj"],["literal","amount"],["member",387,388,true],["binary","<",389,3],["literal","−$"],["literal","+$"],["ternary",390,391,392],["call","abs",[389]],["call","round",[394]],["call","thousands",[395]],["binary","+",393,396],["root","brandAccent"],["literal","inherit"],["binary","||",398,399],["root","brandBg"],["binary","||",401,399],["root","brandMain"],["binary","!=",403,24],["literal","color-mix(in srgb, "],["binary","+",405,403],["literal"," 78%, black)"],["binary","+",406,407],["ternary",404,408,24],["binary","||",409,399],["literal",false],["literal","mui-v-PriceBlock-cash--large"],["ternary",411,412,24],["literal","mui-v-PriceBlock-price--large"],["ternary",411,414,24],["literal","addOns"],["member",157,416,false],["list"],["binary","??",417,418],["literal","adjustments"],["member",157,420,false],["binary","??",421,418],["literal","description"],["member",157,423,false],["binary","!=",424,24],["literal","applyUrl"],["member",380,426,false],["binary","??",427,24],["literal","apr"],["member",380,429,false],["member",380,214,false],["member",380,93,false],["member",380,191,false],["literal","termMonths"],["member",380,434,false],["literal","hours"],["member",157,436,false],["binary","!=",437,381],["literal","|"],["binary","+",343,439],["binary","+",440,140],["literal","media"],["member",157,442,false],["binary","??",443,418],["member",157,93,false],["literal","promotionIds"],["member",157,446,false],["binary","??",447,418],["literal","status"],["member",157,449,false],["literal","sold"],["binary","==",450,451],["literal","stockNumber"],["member",157,453,false],["binary","!=",454,381],["literal","Stock #"],["binary","+",456,454],["literal","Model "],["literal","sku"],["member",242,459,false],["binary","+",458,460],["ternary",455,457,461],["binary","??",454,460],["literal","catalogId"],["member",242,464,false],["root","i"],["binary","==",466,3],["root","promoSets"],["call","count",[468]],["call","mod",[469,315]],["literal",1],["binary","==",470,471],["binary","&&",467,472],["literal","100vw"],["literal","(min-width: 768px) 50vw, 100vw"],["ternary",473,474,475],["literal","mui-v-PromoCard-card--featured"],["ternary",473,477,24],["literal","mui-v-PromoCard-name--featured"],["ternary",473,479,24],["member",190,153,true],["call","includes",[58,481]],["literal","mui-v-ProductDetail-ao--on"],["ternary",482,483,24],["literal","category"],["member",118,485,true],["binary","??",486,24],["binary","!=",487,24],["literal","invCondition"],["member",19,489,true],["literal","all"],["binary","!=",490,491],["binary","||",488,492],["binary","!=",90,24],["binary","||",493,494],["binary","==",487,24],["root","$f95d22fe$base"],["call","filterBy",[497,243,487]],["ternary",496,497,498],["literal","categories"],["member",19,500,true],["call","findBy",[501,153,487]],["call","get",[502,93,24]],["binary","??",503,24],["ternary",496,24,504],["root","c"],["member",506,153,true],["binary","==",487,507],["binary","!=",100,24],["binary","&&",122,509],["binary","==",121,24],["call","findBy",[284,153,121]],["call","get",[512,93,24]],["call","findBy",[468,253,121]],["literal","promotion.name"],["call","get",[514,515,24]],["binary","??",516,24],["binary","??",513,517],["ternary",511,24,518],["root","availableRows"],["literal","promoKey"],["call","searchBy",[520,521,121]],["ternary",511,520,522],["literal","/cart"],["literal","path"],["member",116,525,true],["call","routeActive",[524,526,411]],["literal","mui-v-SiteHeader-drawerLink--active"],["ternary",527,528,24],["root","item"],["literal","href"],["member",530,531,true],["literal","exact"],["member",530,533,true],["call","routeActive",[532,526,534]],["ternary",535,528,24],["literal","mui-v-SiteHeader-link--active"],["ternary",535,537,24],["member",179,379,true],["binary","!=",539,381],["binary",">",186,3],["binary","&&",540,541],["binary","<",186,210],["binary","&&",542,543],["member",179,453,true],["binary","!=",545,381],["binary","+",456,545],["member",179,241,true],["member",548,459,true],["ternary",546,547,549],["member",179,436,true],["binary","!=",551,381],["literal"," · "],["call","thousands",[551]],["binary","+",553,554],["literal"," hrs"],["binary","+",555,556],["ternary",552,557,24],["binary","+",550,558],["literal","checkout"],["member",19,560,true],["literal","attempted"],["member",561,562,true],["root","coContactErr"],["binary","!=",564,24],["binary","&&",563,565],["literal","mui-v-field--invalid"],["ternary",566,567,24],["root","coNameErr"],["binary","!=",569,24],["binary","&&",563,570],["ternary",571,567,24],["ternary",563,564,24],["binary","!=",573,24],["ternary",563,569,24],["binary","!=",575,24],["literal","contactForm"],["member",19,577,true],["member",578,562,true],["root","ctEmailErr"],["binary","!=",580,24],["binary","&&",579,581],["ternary",582,567,24],["root","ctMsgErr"],["binary","!=",584,24],["binary","&&",579,585],["ternary",586,567,24],["root","ctNameErr"],["binary","!=",588,24],["binary","&&",579,589],["ternary",590,567,24],["ternary",579,580,24],["binary","!=",592,24],["ternary",579,584,24],["binary","!=",594,24],["ternary",579,588,24],["binary","!=",596,24],["root","f"],["member",598,153,true],["binary","==",490,599],["literal","mui-v-InventoryPage-seg--on"],["ternary",600,601,24],["literal","mui-v-ProductDetail-thumbKnob--on"],["ternary",366,603,24],["literal","mui-v-ProductDetail-track--on"],["ternary",366,605,24],["ternary",366,368,24],["literal",true],["ternary",608,412,24],["ternary",608,414,24],["root","a"],["member",611,153,true],["member",611,164,true],["binary","??",613,3],["member",387,93,true],["member",190,135,true],["binary","!=",616,381],["member",616,137,true],["literal","card"],["member",618,619,true],["member",190,93,true],["literal","qty"],["member",190,622,true],["binary",">",623,471],["literal"," ×"],["binary","+",625,623],["ternary",624,626,24],["binary","+",621,627],["binary","!=",192,381],["member",190,164,true],["binary","!=",630,381],["call","round",[630]],["call","thousands",[632]],["binary","+",151,633],["literal","Price at pickup"],["ternary",631,634,635],["member",190,459,true],["member",506,93,true],["binary","+",638,291],["literal","unitCount"],["member",506,640,true],["binary","+",639,641],["binary","+",642,293],["root","cartIds"],["root","cartSelections"],["literal","firstUnit"],["member",246,646,true],["member",246,93,true],["literal","thumbUrl"],["member",246,649,true],["binary","!=",650,24],["literal","unitThumbUrl"],["member",246,652,true],["ternary",651,650,653],["member",246,640,true],["literal"," available"],["binary","+",655,656],["literal","units"],["member",246,658,true],["root","catCounts"],["root","catFirstUnit"],["root","catFlags"],["root","catOwnThumb"],["root","catUnits"],["literal","Sending request…"],["literal","Send pickup request"],["ternary",6,665,666],["ternary",6,130,131],["binary","==",569,24],["binary","==",564,24],["binary","&&",669,670],["literal","cart"],["member",19,672,true],["call","count",[673]],["binary",">",674,3],["binary","&&",671,675],["root","coProblem"],["binary","!=",677,381],["literal","hint"],["member",677,679,true],["literal"," Your cart and details are still here."],["binary","+",680,681],["literal","message"],["member",677,683,true],["root","coReady"],["binary","&&",685,7],["call","count",[645]],["binary","==",687,3],["binary","&&",686,688],["binary",">",687,3],["binary","&&",686,690],["root","constants"],["literal","conditionFilters"],["member",692,693,true],["literal","contactTopics"],["member",692,695,true],["literal","navItems"],["member",692,697,true],["literal","skeletonSlots"],["member",692,699,true],["call","count",[54]],["binary",">",701,3],["binary",">",277,3],["call","count",[61]],["call","count",[71]],["binary",">",705,3],["call","count",[98]],["binary",">",707,3],["call","count",[109]],["binary",">",709,3],["call","count",[417]],["binary",">",711,3],["call","count",[421]],["binary",">",713,3],["call","count",[443]],["binary",">",715,3],["call","count",[447]],["binary",">",717,3],["call","count",[520]],["binary","==",719,3],["literal","New and used equipment shows up here as soon as it is on the lot. Call or message the shop and we will help you find the right machine."],["literal","Try a different category or condition, or clear the search."],["ternary",720,721,722],["literal","No machines listed right now"],["literal","Nothing matches those filters"],["ternary",720,724,725],["binary",">",469,3],["member",179,446,true],["call","count",[728]],["binary",">",729,3],["call","first",[728]],["call","findBy",[284,153,731]],["call","get",[732,93,24]],["binary","??",733,24],["ternary",730,734,24],["binary","+",674,111],["call","pluralize",[674,300]],["binary","+",736,737],["binary","==",674,3],["call","sumBy",[673,164]],["call","sumBy",[673,204]],["binary","+",740,741],["ternary",739,3,742],["root","stockedCategories"],["call","count",[744]],["binary",">",745,3],["binary","==",588,24],["binary","==",580,24],["binary","&&",747,748],["binary","==",584,24],["binary","&&",749,750],["binary","&&",751,13],["root","ctProblem"],["binary","!=",753,381],["member",753,679,true],["literal"," Your message is still here."],["binary","+",755,756],["member",753,683,true],["root","dealerLogoUrl"],["binary","!=",759,24],["binary","==",759,24],["literal"," home"],["binary","+",361,762],["root","directionsUrl"],["root","event"],["literal","value"],["member",765,766,true],["binary","==",767,24],["ternary",768,381,767],["member",598,423,true],["literal","label"],["member",598,771,true],["member",598,135,true],["binary","!=",773,381],["member",773,137,true],["member",775,619,true],["member",598,93,true],["literal","available"],["call","filterBy",[152,449,778]],["root","pickPriced"],["literal","picked"],["call","filterBy",[780,781,608]],["binary","!=",157,381],["call","findBy",[673,153,343]],["binary","!=",784,381],["literal","addOnPick"],["member",19,786,true],["literal","inventoryId"],["member",787,788,true],["call","findBy",[20,153,789]],["literal","wholegoods"],["member",19,791,true],["member",242,153,false],["call","findBy",[792,153,793]],["root","dealerRow"],["literal","locations"],["call","get",[795,796,418]],["binary","??",797,418],["call","first",[798]],["literal","dealer"],["member",19,800,true],["call","first",[801]],["member",561,93,true],["call","trim",[803]],["call","words",[804]],["call","first",[805]],["binary","??",806,804],["member",578,93,true],["call","trim",[808]],["call","words",[809]],["call","first",[810]],["literal","friend"],["binary","??",811,812],["literal","finance.apr"],["call","get",[157,814,3]],["binary","??",815,3],["call","fixed",[816,315]],["literal","% interest · "],["binary","+",817,818],["literal","finance.termMonths"],["call","get",[157,820,3]],["binary","??",821,3],["binary","+",819,822],["literal"," mo"],["binary","+",823,824],["call","get",[179,814,3]],["binary","??",826,3],["call","fixed",[827,315]],["binary","+",828,818],["call","get",[179,820,3]],["binary","??",830,3],["binary","+",829,831],["binary","+",832,824],["member",215,429,true],["call","fixed",[834,315]],["literal","%"],["binary","+",835,836],["literal","Sending…"],["literal","Send message"],["ternary",12,838,839],["ternary",12,130,131],["literal","effect"],["member",10,842,true],["literal","write"],["binary","==",843,844],["literal","problem"],["member",10,846,true],["ternary",845,847,381],["binary","==",157,381],["binary","&&",17,849],["literal","leads"],["member",8,851,true],["member",852,11,true],["member",852,842,true],["binary","==",854,844],["member",852,846,true],["ternary",855,856,381],["root","g"],["literal","key"],["member",858,859,true],["literal","rows"],["member",858,861,true],["root","$4d23290f$wgRow"],["literal","features"],["call","get",[863,864,418]],["binary","??",865,418],["literal","resources"],["call","get",[863,867,418]],["binary","??",868,418],["literal","subtitle"],["call","get",[863,870,24]],["member",242,870,false],["binary","??",872,24],["binary","??",871,873],["literal","mediaFile.urls.card"],["call","get",[157,875,24]],["binary","??",876,24],["literal","mediaFile.urls.page"],["call","get",[157,878,24]],["binary","??",879,24],["literal","branding.colors.accent"],["call","get",[795,881,24]],["binary","??",882,24],["literal","branding.colors.background"],["call","get",[795,884,24]],["binary","??",885,24],["literal","branding.colors.main"],["call","get",[795,887,24]],["binary","??",888,24],["literal","logo.urls.large"],["call","get",[795,890,24]],["binary","??",891,24],["literal","Garland Saw & Lawnmower"],["call","get",[795,93,893]],["binary","??",894,893],["literal","imgMobileSrcset"],["call","get",[514,896,24]],["binary","??",897,24],["literal","imgSrc"],["call","get",[514,899,24]],["binary","??",900,24],["literal","imgSrcset"],["call","get",[514,902,24]],["binary","??",903,24],["call","findBy",[501,153,244]],["call","get",[905,93,24]],["binary","??",906,24],["call","get",[512,423,24]],["binary","??",908,24],["call","get",[512,271,24]],["binary","??",910,24],["call","get",[512,307,3]],["binary","??",912,3],["call","get",[285,423,24]],["binary","??",914,24],["call","get",[285,93,24]],["binary","??",916,24],["literal","websiteContent"],["member",19,918,true],["call","first",[919]],["literal","mediaSets"],["call","get",[920,921,418]],["binary","??",922,418],["root","location"],["literal","address"],["call","get",[924,925,24]],["binary","??",926,24],["literal","city"],["call","get",[924,928,24]],["binary","??",929,24],["literal","email"],["call","get",[924,931,24]],["binary","??",932,24],["literal","phone"],["call","get",[924,934,24]],["binary","??",935,24],["literal","state"],["call","get",[924,937,24]],["binary","??",938,24],["literal","zip"],["call","get",[924,940,24]],["binary","??",941,24],["root","pickRow"],["call","get",[943,416,418]],["binary","??",944,418],["call","get",[179,875,24]],["binary","??",946,24],["literal","specs"],["call","get",[863,948,418]],["binary","??",949,418],["literal","group"],["call","groupRows",[950,951]],["root","invBrand"],["root","invCat"],["literal","hasAddOns"],["member",202,955,true],["literal","img"],["member",202,957,true],["binary","!=",958,24],["literal","http"],["call","startsWith",[958,960]],["binary","&&",959,961],["literal","stock"],["member",202,963,true],["member",530,771,true],["root","locAddress"],["binary","!=",966,24],["binary","==",966,24],["literal",", "],["binary","+",966,969],["root","locCityLine"],["binary","+",970,971],["ternary",968,24,972],["root","locCity"],["binary","+",974,969],["root","locState"],["binary","+",975,976],["binary","+",977,111],["root","locZip"],["binary","+",978,979],["binary","!=",351,24],["binary","!=",346,24],["binary","!=",257,24],["literal","condition"],["member",157,984,false],["literal","conditionLabels"],["member",692,986,true],["literal","New"],["call","lookup",[985,987,988]],["root","r"],["literal","type"],["member",990,991,true],["literal","resourceLabels"],["member",692,993,true],["literal","Resource"],["call","lookup",[992,994,995]],["member",179,984,true],["call","lookup",[997,987,988]],["literal","topic"],["member",578,999,true],["literal","contactTopicLabels"],["member",692,1001,true],["literal","Other"],["call","lookup",[1000,1002,1003]],["member",138,619,true],["root","mediaSets"],["root","pickAddOns"],["root","pickFlags"],["call","filterBy",[673,955,608]],["literal","selection"],["call","pluck",[1009,1010]],["call","pluck",[673,153]],["root","problem"],["member",1013,679,true],["member",1013,683,true],["literal","retry"],["member",1013,1016,true],["literal","never"],["binary","!=",1017,1018],["literal","url"],["member",990,1020,true],["member",116,93,true],["binary","==",1022,672],["binary","==",1022,9],["literal","home"],["binary","==",1022,1025],["binary","==",1022,14],["literal","product"],["binary","==",1022,1028],["ternary",535,139,411],["member",539,426,true],["binary","??",1031,24],["member",539,429,true],["member",539,214,true],["member",539,93,true],["member",539,191,true],["member",539,434,true],["literal","brandId"],["member",548,1038,true],["member",548,243,true],["literal","hero"],["member",252,1041,true],["literal","heroDesktop"],["member",252,1043,true],["literal","heroFirst"],["member",252,1045,true],["literal","heroMobile"],["member",252,1047,true],["literal","heroPick"],["member",252,1049,true],["binary","!=",1050,381],["literal","file"],["member",1050,1052,true],["member",1053,137,true],["literal","desktop"],["member",1054,1055,true],["ternary",1051,1056,24],["member",1054,934,true],["literal"," 640w, "],["binary","+",1058,1059],["literal","tablet"],["member",1054,1061,true],["binary","+",1060,1062],["literal"," 1024w, "],["binary","+",1063,1064],["binary","+",1065,1056],["literal"," 1920w"],["binary","+",1066,1067],["ternary",1051,1068,24],["literal","heroPickMobile"],["member",252,1070,true],["binary","!=",1071,381],["member",1071,1052,true],["member",1073,137,true],["member",1074,934,true],["binary","+",1075,1059],["member",1074,1061,true],["binary","+",1076,1077],["binary","+",1078,1064],["member",1074,1055,true],["binary","+",1079,1080],["binary","+",1081,1067],["ternary",1072,1082,24],["member",252,896,true],["member",252,899,true],["binary","!=",1085,24],["member",252,902,true],["member",270,423,true],["binary","!=",1088,24],["member",270,93,true],["literal"," — shop "],["binary","+",1090,1091],["binary","+",1092,308],["binary","+",1093,111],["binary","+",1094,311],["member",270,991,true],["literal","dollarsOff"],["binary","==",1096,1097],["literal","discount"],["member",270,1099,true],["binary",">",1100,3],["binary","&&",1098,1101],["call","round",[1100]],["call","thousands",[1103]],["binary","+",151,1104],["literal"," off"],["binary","+",1105,1106],["literal","Offer"],["ternary",1102,1107,1108],["root","setDesktop"],["root","setFirst"],["root","setImg"],["root","setImgMobile"],["root","setMobile"],["root","setPick"],["root","setPickMobile"],["root","setPromo"],["root","catUnitThumb"],["literal","hasStock"],["call","filterBy",[1118,1119,608]],["literal","weight"],["call","sortBy",[1120,1121]],["root","sp"],["member",1123,771,true],["member",1123,93,true],["binary","??",1124,1125],["literal","$inst"],["member",19,1127,true],["literal","ProductDetail__u0"],["member",1128,1129,true],["literal","_"],["member",1130,1131,true],["literal","active"],["member",1132,1133,true],["literal","$default"],["member",19,1135,true],["member",1136,1129,true],["member",1137,1133,true],["binary","??",1134,1138],["call","startsWith",[1139,440]],["call","length",[343]],["binary","+",1141,471],["call","slice",[1139,1142]],["ternary",1140,1143,96],["literal","ids"],["member",787,1145,true],["binary","!=",789,343],["binary","==",789,343],["root","pickedTotal"],["ternary",1148,1149,3],["ternary",1148,1146,418],["literal","co-email-error"],["ternary",566,1152,411],["ternary",566,130,131],["literal","co-name-error"],["ternary",571,1155,411],["ternary",571,130,131],["member",561,931,true],["member",561,934,true],["ternary",582,130,131],["ternary",586,130,131],["ternary",590,130,131],["member",578,931,true],["member",578,683,true],["member",578,934,true],["root","t"],["member",1166,153,true],["binary","==",1000,1167],["binary","!=",320,24],["binary","==",320,24],["binary","!=",215,381],["member",215,426,true],["binary","!=",1172,24],["member",215,214,true],["member",215,93,true],["binary","!=",1175,24],["member",215,434,true],["binary","+",1177,824],["literal","title"],["member",215,1179,true],["binary","==",490,491],["root","$266edf45$byCat"],["call","filterBy",[1182,984,490]],["ternary",1181,1182,1183],["ternary",600,130,131],["literal","invQuery"],["member",19,1186,true],["literal","invSort"],["member",19,1188,true],["literal","newest"],["binary","==",1189,1190],["literal","priceHigh"],["binary","==",1189,1192],["literal","priceLow"],["binary","==",1189,1194],["root","$bb90e4d7$searched"],["call","sortBy",[1196,164]],["literal","desc"],["call","sortBy",[1196,164,1198]],["literal","createdAt"],["call","sortBy",[1196,1200,1198]],["ternary",1193,1199,1201],["ternary",1195,1197,1202],["literal","lastAdded"],["member",19,1204,true],["binary","==",1205,343],["binary","&&",1206,49],["ternary",366,130,131],["literal","display"],["member",1123,1209,true],["member",1210,365,true],["literal","imperial"],["member",1210,1212,true],["ternary",366,1211,1213],["literal","navOpen"],["member",19,1215,true],["ternary",1216,130,131],["binary","!=",325,381],["binary","&&",1218,739],["binary","==",325,381],["binary","&&",1220,739],["literal","renderedAt"],["member",19,1222,true],["binary","!=",1223,381],["literal","YYYY"],["call","formatDate",[1223,1225]],["ternary",1224,1226,24],["literal","viewingCatalog"],["member",19,1228,true],["root","pickedAddOns"],["literal","priceOrZero"],["call","sumBy",[1230,1231]],["member",1166,771,true],["call","filterBy",[520,243,244]],["call","partition",[1234,153,343]],["call","nth",[1235,471]],["binary","??",1236,418],["literal",4],["call","take",[1237,1238]],["root","telHref"],["literal","heroImage"],["member",692,1241,true],["literal",2048],["call","tenant_media__imageUrl",[1242,1243]],["literal","storefrontImage"],["member",692,1245,true],["literal",1024],["call","tenant_media__imageUrl",[1246,1247]],["literal",1600],["call","tenant_media__imageUrl",[1246,1249]],["call","thousands",[437]],["binary","+",1251,556],["call","trim",[1158]],["binary","==",1253,24],["call","trim",[1159]],["binary","==",1255,24],["binary","&&",1254,1256],["literal","Add an email or phone so we can confirm your order."],["binary","!=",1253,24],["literal","@"],["call","contains",[1158,1260]],["unary","!",1261],["literal","."],["call","contains",[1158,1263]],["unary","!",1264],["binary","||",1262,1265],["binary","&&",1259,1266],["literal","That email looks incomplete."],["ternary",1267,1268,24],["ternary",1257,1258,1269],["ternary",1254,381,1253],["binary","==",804,24],["literal","Tell us who will pick it up."],["ternary",1272,1273,24],["ternary",1256,381,1255],["call","trim",[1163]],["binary","==",1276,24],["literal","We need an email to reply."],["call","contains",[1163,1260]],["unary","!",1279],["call","contains",[1163,1263]],["unary","!",1281],["binary","||",1280,1282],["ternary",1283,1268,24],["ternary",1277,1278,1284],["call","trim",[1164]],["binary","==",1286,24],["literal","Add a short message."],["ternary",1287,1288,24],["binary","==",809,24],["literal","Tell us your name."],["ternary",1290,1291,24],["call","trim",[1165]],["call","trim",[1187]],["literal",140],["call","truncate",[1088,1295]],["root","setImgSrc"],["call","partition",[1297,253,24]],["call","nth",[1298,471]],["binary","??",1299,418],["call","uniqueBy",[1300,253]]],"expressions":[5,7,13,23,25,27,29,32,34,36,38,40,42,44,46,47,53,54,55,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,76,82,83,84,85,86,87,88,89,95,97,98,99,100,101,102,103,104,105,108,109,0,126,127,128,132,133,142,143,144,146,147,148,149,150,163,168,172,178,184,189,197,201,209,213,221,234,237,239,245,248,251,255,259,268,275,281,289,296,302,305,312,317,323,329,332,341,344,349,352,354,364,369,370,373,375,377,378,386,397,400,402,410,413,415,419,422,424,425,382,428,430,431,432,433,435,438,343,441,444,445,165,448,452,462,463,465,476,478,480,484,495,496,499,505,508,122,510,511,519,523,529,536,538,544,559,568,572,574,576,583,587,591,593,595,597,602,604,606,607,609,610,612,614,615,481,617,620,628,629,636,637,520,507,643,644,645,246,647,247,648,651,654,655,657,659,660,661,662,663,664,6,667,668,676,678,682,684,689,691,694,696,698,700,702,277,703,704,706,708,710,712,714,716,718,723,726,727,735,674,738,743,675,746,752,754,757,758,759,760,761,361,763,764,767,769,770,599,772,774,776,777,411,779,782,783,785,790,794,799,802,807,813,825,833,837,12,840,841,848,850,853,857,860,862,866,869,874,877,880,883,886,889,892,895,898,901,904,907,909,911,913,915,917,923,927,930,933,936,939,942,945,947,952,482,953,954,956,236,958,962,304,964,532,965,966,967,968,973,980,971,351,981,982,983,989,996,998,1004,1005,1006,258,1007,1008,1011,1012,1014,1015,1019,468,1021,1023,1024,1026,1027,1029,487,1030,540,1032,1033,1034,1035,1036,1037,331,728,1039,1040,252,1042,1044,1046,1048,1050,1057,1069,1083,1084,1085,1086,1087,1089,1090,1095,1109,1110,1111,1112,1113,1114,1115,1116,1117,1122,1126,1144,1146,1147,1150,1151,673,501,1153,1154,1156,1157,573,575,1158,803,1159,1160,1161,1162,592,594,596,1163,1164,808,1165,1000,1168,1169,1170,1171,1172,1173,1174,1175,1176,1178,1180,1184,1185,1187,1189,1191,1193,1195,1203,20,1207,1208,1214,1216,1217,1219,1221,1227,1229,744,1232,1167,1233,1239,1240,1244,1248,1250,1252,1270,1271,804,1274,1275,1276,1285,1286,1289,809,1292,1293,1294,608,1296,1301],"spelled":[["!coBusy",1],["!fx.contact.busy",2],["!fx.inventory.loaded && count(state.inventory) == 0",3],["$36b1e3e5$pickIds",20],["$3fd7463d$mainThumb",21],["$476d6689$sorted",23],["$4d90eda5$href",27],["$67caf199$addOnTotal",32],["$aa7eee53$promoIds",39],["$c0919d8e$query == '' ? $cfd369fc$byCond : searchBy($cfd369fc$byCond, 'name', $c0919d8e$query)",44],["'/inventory/' + it.id",82],["'/inventory/' + row.id",83],["'/inventory?category=' + (findBy(invRows, 'id', route.params.id)).wholegood.categoryId",84],["'/inventory?category=' + cat.id",85],["'/inventory?promotion=' + pid",86],["'/inventory?promotion=' + set.promoId",87],["'https://www.google.com/maps/dir/?api=1&destination=' + replace(locFull, ' ', '+')",103],["'mailto:' + locEmail",104],["'tel:' + locPhone",105],["((findBy(invRows, 'id', route.params.id)).finance != null) && ((findBy(invRows, 'id', route.params.id)).cashPrice ?? 0) > 0 && ((findBy(invRows, 'id', route.params.id)).cashPrice ?? 0) < ((findBy(invRows, 'id', route.params.id)).price)",113],["(findBy(invRows, 'id', route.params.id)).addOns ?? []",120],["(findBy(invRows, 'id', route.params.id)).adjustments ?? []",121],["(findBy(invRows, 'id', route.params.id)).finance != null",124],["(findBy(invRows, 'id', route.params.id)).finance.applyUrl ?? ''",125],["(findBy(invRows, 'id', route.params.id)).finance.apr",126],["(findBy(invRows, 'id', route.params.id)).finance.disclosure",127],["(findBy(invRows, 'id', route.params.id)).finance.name",128],["(findBy(invRows, 'id', route.params.id)).finance.payment",129],["(findBy(invRows, 'id', route.params.id)).finance.termMonths",130],["(findBy(invRows, 'id', route.params.id)).id",132],["(findBy(invRows, 'id', route.params.id)).id + '|' + m.mediaFile.urls.page",133],["(findBy(invRows, 'id', route.params.id)).media ?? []",134],["(findBy(invRows, 'id', route.params.id)).name",135],["(findBy(invRows, 'id', route.params.id)).price",136],["(findBy(invRows, 'id', route.params.id)).promotionIds ?? []",137],["(findBy(invRows, 'id', route.params.id)).status == 'sold'",138],["(findBy(invRows, 'id', route.params.id)).stockNumber ?? (findBy(invRows, 'id', route.params.id)).wholegood.sku",140],["(findBy(invRows, 'id', route.params.id)).wholegood.catalogId",141],["(route.query.category ?? '') != '' || state.invCondition != 'all' || $c0919d8e$query != ''",146],["(route.query.category ?? '') == ''",147],["(route.query.category ?? '') == '' ? $f95d22fe$base : filterBy($f95d22fe$base, 'categoryId', (route.query.category ?? ''))",148],["(route.query.category ?? '') == '' ? '' : (get(findBy(state.categories, 'id', (route.query.category ?? '')), 'name', '') ?? '')",149],["(route.query.promotion ?? '') == ''",153],["(route.query.promotion ?? '') == '' ? '' : (get(findBy(state.promotions, 'id', (route.query.promotion ?? '')), 'name', '') ?? (get(findBy(promoSets, 'promoId', (route.query.promotion ?? '')), 'promotion.name', '') ?? ''))",154],["(route.query.promotion ?? '') == '' ? availableRows : searchBy(availableRows, 'promoKey', (route.query.promotion ?? ''))",155],["(row.finance != null) && (row.cashPrice ?? 0) > 0 && (row.cashPrice ?? 0) < row.price",159],["a.id",177],["a.price ?? 0",178],["ao.id",180],["availableRows",187],["cartIds",190],["cartSelections",191],["cat",192],["cat.firstUnit",193],["cat.id",194],["cat.thumbUrl != ''",196],["cat.thumbUrl != '' ? cat.thumbUrl : cat.unitThumbUrl",197],["cat.unitCount",198],["cat.units",200],["catCounts",201],["catFirstUnit",202],["catFlags",203],["catOwnThumb",204],["catUnits",205],["coBusy",206],["coNameErr == '' && coContactErr == '' && count(state.cart) > 0",209],["coReady && !coBusy && count(cartSelections) == 0",213],["coReady && !coBusy && count(cartSelections) > 0",214],["constants.navItems",217],["count($36b1e3e5$pickIds)",220],["count($36b1e3e5$pickIds) > 0",221],["count($476d6689$sorted)",222],["count(row.promotionIds) > 0 ? (get(findBy(state.promotions, 'id', first(row.promotionIds)), 'name', '') ?? '') : ''",233],["count(state.cart)",234],["count(state.cart) == 0 ? 0 : sumBy(state.cart, 'price') + sumBy(state.cart, 'addOnTotal')",236],["count(state.cart) > 0",237],["ctNameErr == '' && ctEmailErr == '' && ctMsgErr == '' && !fx.contact.busy",239],["dealerLogoUrl",243],["dealerName",246],["directionsUrl",248],["event.value",249],["event.value == '' ? null : event.value",250],["f.id",252],["false",257],["filterBy(invRows, 'status', 'available')",258],["filterBy(pickPriced, 'picked', true)",259],["findBy(state.cart, 'id', (findBy(invRows, 'id', route.params.id)).id) != null",261],["findBy(state.inventory, 'id', state.addOnPick.inventoryId)",262],["findBy(state.wholegoods, 'id', (findBy(invRows, 'id', route.params.id)).wholegood.id)",263],["first(get(dealerRow, 'locations', []) ?? [])",264],["first(state.dealer)",265],["first(words(trim(state.checkout.name))) ?? trim(state.checkout.name)",266],["first(words(trim(state.contactForm.name))) ?? 'friend'",267],["fx.contact.busy",271],["fx.contact.effect == 'write' ? fx.contact.problem : null",274],["fx.inventory.loaded && findBy(invRows, 'id', route.params.id) == null",275],["fx.leads.busy",276],["fx.leads.effect == 'write' ? fx.leads.problem : null",277],["get($4d23290f$wgRow, 'features', []) ?? []",280],["get($4d23290f$wgRow, 'resources', []) ?? []",281],["get($4d23290f$wgRow, 'subtitle', '') ?? ((findBy(invRows, 'id', route.params.id)).wholegood.subtitle ?? '')",282],["get((findBy(invRows, 'id', route.params.id)), 'mediaFile.urls.card', '') ?? ''",283],["get((findBy(invRows, 'id', route.params.id)), 'mediaFile.urls.page', '') ?? ''",284],["get(dealerRow, 'branding.colors.accent', '') ?? ''",285],["get(dealerRow, 'branding.colors.background', '') ?? ''",286],["get(dealerRow, 'branding.colors.main', '') ?? ''",287],["get(dealerRow, 'logo.urls.large', '') ?? ''",288],["get(dealerRow, 'name', 'Garland Saw & Lawnmower') ?? 'Garland Saw & Lawnmower'",289],["get(findBy(promoSets, 'promoId', (route.query.promotion ?? '')), 'imgMobileSrcset', '') ?? ''",290],["get(findBy(promoSets, 'promoId', (route.query.promotion ?? '')), 'imgSrc', '') ?? ''",291],["get(findBy(promoSets, 'promoId', (route.query.promotion ?? '')), 'imgSrcset', '') ?? ''",292],["get(findBy(state.categories, 'id', (findBy(invRows, 'id', route.params.id)).wholegood.categoryId), 'name', '') ?? ''",293],["get(findBy(state.promotions, 'id', (route.query.promotion ?? '')), 'description', '') ?? ''",294],["get(findBy(state.promotions, 'id', (route.query.promotion ?? '')), 'ends', '') ?? ''",295],["get(findBy(state.promotions, 'id', (route.query.promotion ?? '')), 'inventoryCount', 0) ?? 0",296],["get(first(state.websiteContent), 'mediaSets', []) ?? []",299],["get(location, 'address', '') ?? ''",300],["get(location, 'city', '') ?? ''",301],["get(location, 'email', '') ?? ''",302],["get(location, 'phone', '') ?? ''",303],["get(location, 'state', '') ?? ''",304],["get(location, 'zip', '') ?? ''",305],["get(pickRow, 'addOns', []) ?? []",306],["get(row, 'mediaFile.urls.card', '') ?? ''",307],["groupRows(get($4d23290f$wgRow, 'specs', []) ?? [], 'group')",308],["invBrand",310],["invCat",311],["it.id",313],["item.href",318],["locAddress",320],["locAddress == ''",322],["locAddress == '' ? '' : locAddress + ', ' + locCityLine",323],["locCity + ', ' + locState + ' ' + locZip",324],["locCityLine",325],["locEmail",326],["lookup(state.contactForm.topic, constants.contactTopicLabels, 'Other')",333],["mediaSets",335],["pickAddOns",337],["pickFlags",338],["pluck(filterBy(state.cart, 'hasAddOns', true), 'selection')",339],["pluck(state.cart, 'id')",340],["promoSets",344],["route.query.category ?? ''",351],["row.finance != null",353],["row.finance.applyUrl ?? ''",354],["row.finance.apr",355],["row.finance.disclosure",356],["row.finance.name",357],["row.finance.payment",358],["row.finance.termMonths",359],["row.name",360],["row.promotionIds",361],["row.wholegood.brandId",362],["row.wholegood.categoryId",363],["set",364],["set.hero",365],["set.heroDesktop",366],["set.heroFirst",367],["set.heroMobile",368],["set.heroPick",369],["set.heroPick != null ? set.heroPick.file.urls.desktop : ''",370],["set.heroPick != null ? set.heroPick.file.urls.phone + ' 640w, ' + set.heroPick.file.urls.tablet + ' 1024w, ' + set.heroPick.file.urls.desktop + ' 1920w' : ''",371],["set.heroPickMobile != null ? set.heroPickMobile.file.urls.phone + ' 640w, ' + set.heroPickMobile.file.urls.tablet + ' 1024w, ' + set.heroPickMobile.file.urls.desktop + ' 1920w' : ''",372],["setDesktop",381],["setFirst",382],["setImg",383],["setImgMobile",384],["setMobile",385],["setPick",386],["setPickMobile",387],["setPromo",388],["sortBy(filterBy(catUnitThumb, 'hasStock', true), 'weight')",389],["startsWith((state.$inst.ProductDetail__u0['_'].active ?? state.$default.ProductDetail__u0.active), (findBy(invRows, 'id', route.params.id)).id + '|') ? slice((state.$inst.ProductDetail__u0['_'].active ?? state.$default.ProductDetail__u0.active), length((findBy(invRows, 'id', route.params.id)).id) + 1) : $c50d6868$mainImg",391],["state.addOnPick.ids",392],["state.addOnPick.inventoryId != (findBy(invRows, 'id', route.params.id)).id",393],["state.addOnPick.inventoryId == (findBy(invRows, 'id', route.params.id)).id ? pickedTotal : 0",394],["state.addOnPick.inventoryId == (findBy(invRows, 'id', route.params.id)).id ? state.addOnPick.ids : []",395],["state.cart",396],["state.categories",397],["state.checkout.email",404],["state.checkout.name",405],["state.checkout.phone",406],["state.contactForm.email",413],["state.contactForm.message",414],["state.contactForm.name",415],["state.contactForm.phone",416],["state.contactForm.topic",417],["state.invCondition == 'all' ? $266edf45$byCat : filterBy($266edf45$byCat, 'condition', state.invCondition)",429],["state.invQuery",431],["state.invSort",432],["state.invSort == 'priceHigh'",434],["state.invSort == 'priceLow'",435],["state.invSort == 'priceLow' ? sortBy($bb90e4d7$searched, 'price') : (state.invSort == 'priceHigh' ? sortBy($bb90e4d7$searched, 'price', 'desc') : sortBy($bb90e4d7$searched, 'createdAt', 'desc'))",436],["state.inventory",437],["state.renderedAt != null ? formatDate(state.renderedAt, 'YYYY') : ''",445],["state.viewingCatalog",446],["stockedCategories",447],["sumBy(pickedAddOns, 'priceOrZero')",448],["t.id",449],["take(nth(partition(filterBy(availableRows, 'categoryId', (findBy(invRows, 'id', route.params.id)).wholegood.categoryId), 'id', (findBy(invRows, 'id', route.params.id)).id), 1) ?? [], 4)",451],["telHref",452],["trim(state.checkout.email) == '' && trim(state.checkout.phone) == '' ? 'Add an email or phone so we can confirm your order.' : (trim(state.checkout.email) != '' && (!contains(state.checkout.email, '@') || !contains(state.checkout.email, '.')) ? 'That email looks incomplete.' : '')",457],["trim(state.checkout.email) == '' ? null : trim(state.checkout.email)",458],["trim(state.checkout.name)",459],["trim(state.checkout.name) == '' ? 'Tell us who will pick it up.' : ''",460],["trim(state.checkout.phone) == '' ? null : trim(state.checkout.phone)",461],["trim(state.contactForm.email)",462],["trim(state.contactForm.email) == '' ? 'We need an email to reply.' : ((!contains(state.contactForm.email, '@') || !contains(state.contactForm.email, '.')) ? 'That email looks incomplete.' : '')",463],["trim(state.contactForm.message)",464],["trim(state.contactForm.message) == '' ? 'Add a short message.' : ''",465],["trim(state.contactForm.name)",466],["trim(state.contactForm.name) == '' ? 'Tell us your name.' : ''",467],["trim(state.contactForm.phone)",468],["trim(state.invQuery)",469],["true",470],["uniqueBy(nth(partition(setImgSrc, 'promoId', ''), 1) ?? [], 'promoId')",472]],"templates":[[{"type":"text","value":"--mui-t-brand: "},{"type":"expr","expression":117,"padding":[" "," "]},{"type":"text","value":"; --mui-t-canvas: "},{"type":"expr","expression":116,"padding":[" "," "]},{"type":"text","value":"; --mui-t-steel: "},{"type":"expr","expression":115,"padding":[" "," "]}],[{"type":"text","value":"mui-v-CategoryTile-frame "},{"type":"expr","expression":109,"padding":[" "," "]}],[{"type":"text","value":"mui-v-CategoryTile-img "},{"type":"expr","expression":110,"padding":[" "," "]}],[{"type":"text","value":"mui-v-InventoryPage-seg "},{"type":"expr","expression":171,"padding":[" "," "]}],[{"type":"text","value":"mui-v-PriceBlock-cash "},{"type":"expr","expression":118,"padding":[" "," "]}],[{"type":"text","value":"mui-v-PriceBlock-cash "},{"type":"expr","expression":175,"padding":[" "," "]}],[{"type":"text","value":"mui-v-PriceBlock-price "},{"type":"expr","expression":119,"padding":[" "," "]}],[{"type":"text","value":"mui-v-PriceBlock-price "},{"type":"expr","expression":176,"padding":[" "," "]}],[{"type":"text","value":"mui-v-ProductDetail-ao "},{"type":"expr","expression":145,"padding":[" "," "]}],[{"type":"text","value":"mui-v-ProductDetail-thumb "},{"type":"expr","expression":111,"padding":[" "," "]}],[{"type":"text","value":"mui-v-ProductDetail-thumb "},{"type":"expr","expression":112,"padding":[" "," "]}],[{"type":"text","value":"mui-v-ProductDetail-thumbKnob "},{"type":"expr","expression":172,"padding":[" "," "]}],[{"type":"text","value":"mui-v-ProductDetail-track "},{"type":"expr","expression":173,"padding":[" "," "]}],[{"type":"text","value":"mui-v-ProductDetail-unitLabel "},{"type":"expr","expression":107,"padding":[" "," "]}],[{"type":"text","value":"mui-v-ProductDetail-unitLabel "},{"type":"expr","expression":174,"padding":[" "," "]}],[{"type":"text","value":"mui-v-PromoCard-card "},{"type":"expr","expression":143,"padding":[" "," "]},{"type":"text","value":" mui-m-inView"}],[{"type":"text","value":"mui-v-PromoCard-name "},{"type":"expr","expression":144,"padding":[" "," "]}],[{"type":"text","value":"mui-v-SiteHeader-drawerLink "},{"type":"expr","expression":156,"padding":[" "," "]}],[{"type":"text","value":"mui-v-SiteHeader-drawerLink "},{"type":"expr","expression":157,"padding":[" "," "]}],[{"type":"text","value":"mui-v-SiteHeader-link "},{"type":"expr","expression":158,"padding":[" "," "]}],[{"type":"text","value":"mui-v-field "},{"type":"expr","expression":161,"padding":[" "," "]}],[{"type":"text","value":"mui-v-field "},{"type":"expr","expression":162,"padding":[" "," "]}],[{"type":"text","value":"mui-v-field "},{"type":"expr","expression":165,"padding":[" "," "]}],[{"type":"text","value":"mui-v-field "},{"type":"expr","expression":166,"padding":[" "," "]},{"type":"text","value":" mui-v-ContactPage-textarea"}],[{"type":"text","value":"mui-v-field "},{"type":"expr","expression":167,"padding":[" "," "]}],[{"type":"expr","expression":0,"padding":[" "," "]}],[{"type":"expr","expression":1,"padding":[" "," "]}],[{"type":"expr","expression":2,"padding":[" "," "]}],[{"type":"expr","expression":3,"padding":[" "," "]}],[{"type":"expr","expression":4,"padding":[" "," "]}],[{"type":"expr","expression":5,"padding":[" "," "]}],[{"type":"expr","expression":6,"padding":[" "," "]}],[{"type":"expr","expression":7,"padding":[" "," "]}],[{"type":"expr","expression":8,"padding":[" "," "]}],[{"type":"expr","expression":9,"padding":[" "," "]}],[{"type":"expr","expression":10,"padding":[" "," "]}],[{"type":"expr","expression":11,"padding":[" "," "]}],[{"type":"expr","expression":12,"padding":[" "," "]}],[{"type":"expr","expression":13,"padding":[" "," "]}],[{"type":"expr","expression":14,"padding":[" "," "]}],[{"type":"expr","expression":16,"padding":[" "," "]}],[{"type":"expr","expression":15,"padding":[" "," "]}],[{"type":"expr","expression":17,"padding":[" "," "]}],[{"type":"expr","expression":19,"padding":[" "," "]}],[{"type":"expr","expression":18,"padding":[" "," "]}],[{"type":"expr","expression":20,"padding":[" "," "]}],[{"type":"expr","expression":21,"padding":[" "," "]}],[{"type":"expr","expression":22,"padding":[" "," "]}],[{"type":"expr","expression":23,"padding":[" "," "]}],[{"type":"expr","expression":25,"padding":[" "," "]}],[{"type":"expr","expression":26,"padding":[" "," "]}],[{"type":"expr","expression":24,"padding":[" "," "]}],[{"type":"expr","expression":27,"padding":[" "," "]}],[{"type":"expr","expression":29,"padding":[" "," "]}],[{"type":"expr","expression":28,"padding":[" "," "]}],[{"type":"expr","expression":31,"padding":[" "," "]}],[{"type":"expr","expression":30,"padding":[" "," "]}],[{"type":"expr","expression":32,"padding":[" "," "]}],[{"type":"expr","expression":33,"padding":[" "," "]}],[{"type":"expr","expression":34,"padding":[" "," "]}],[{"type":"expr","expression":35,"padding":[" "," "]}],[{"type":"expr","expression":36,"padding":[" "," "]}],[{"type":"expr","expression":38,"padding":[" "," "]}],[{"type":"expr","expression":37,"padding":[" "," "]}],[{"type":"expr","expression":39,"padding":[" "," "]}],[{"type":"expr","expression":40,"padding":[" "," "]}],[{"type":"expr","expression":41,"padding":[" "," "]}],[{"type":"expr","expression":43,"padding":[" "," "]}],[{"type":"expr","expression":42,"padding":[" "," "]}],[{"type":"expr","expression":44,"padding":[" "," "]}],[{"type":"expr","expression":45,"padding":[" "," "]}],[{"type":"expr","expression":46,"padding":[" "," "]}],[{"type":"expr","expression":47,"padding":[" "," "]}],[{"type":"expr","expression":48,"padding":[" "," "]}],[{"type":"expr","expression":50,"padding":[" "," "]}],[{"type":"expr","expression":51,"padding":[" "," "]}],[{"type":"expr","expression":49,"padding":[" "," "]}],[{"type":"expr","expression":52,"padding":[" "," "]}],[{"type":"expr","expression":54,"padding":[" "," "]}],[{"type":"expr","expression":53,"padding":[" "," "]}],[{"type":"expr","expression":55,"padding":[" "," "]}],[{"type":"expr","expression":57,"padding":[" "," "]}],[{"type":"expr","expression":56,"padding":[" "," "]}],[{"type":"expr","expression":59,"padding":[" "," "]}],[{"type":"expr","expression":60,"padding":[" "," "]}],[{"type":"expr","expression":61,"padding":[" "," "]}],[{"type":"expr","expression":62,"padding":[" "," "]}],[{"type":"expr","expression":58,"padding":[" "," "]}],[{"type":"expr","expression":65,"padding":[" "," "]}],[{"type":"expr","expression":64,"padding":[" "," "]}],[{"type":"expr","expression":63,"padding":[" "," "]}],[{"type":"expr","expression":66,"padding":[" "," "]}],[{"type":"expr","expression":68,"padding":[" "," "]}],[{"type":"expr","expression":67,"padding":[" "," "]}],[{"type":"expr","expression":69,"padding":[" "," "]}],[{"type":"expr","expression":70,"padding":[" "," "]}],[{"type":"expr","expression":71,"padding":[" "," "]}],[{"type":"expr","expression":72,"padding":[" "," "]}],[{"type":"expr","expression":73,"padding":[" "," "]}],[{"type":"expr","expression":74,"padding":[" "," "]}],[{"type":"expr","expression":75,"padding":[" "," "]}],[{"type":"expr","expression":76,"padding":[" "," "]}],[{"type":"expr","expression":77,"padding":[" "," "]}],[{"type":"expr","expression":78,"padding":[" "," "]}],[{"type":"expr","expression":79,"padding":[" "," "]}],[{"type":"expr","expression":80,"padding":[" "," "]}],[{"type":"expr","expression":81,"padding":[" "," "]}],[{"type":"expr","expression":82,"padding":[" "," "]}],[{"type":"expr","expression":83,"padding":[" "," "]}],[{"type":"expr","expression":84,"padding":[" "," "]}],[{"type":"expr","expression":85,"padding":[" "," "]}],[{"type":"expr","expression":86,"padding":[" "," "]}],[{"type":"expr","expression":87,"padding":[" "," "]}],[{"type":"expr","expression":88,"padding":[" "," "]}],[{"type":"expr","expression":89,"padding":[" "," "]}],[{"type":"expr","expression":90,"padding":[" "," "]}],[{"type":"expr","expression":91,"padding":[" "," "]}],[{"type":"expr","expression":92,"padding":[" "," "]}],[{"type":"expr","expression":93,"padding":[" "," "]}],[{"type":"expr","expression":94,"padding":[" "," "]}],[{"type":"expr","expression":95,"padding":[" "," "]}],[{"type":"expr","expression":96,"padding":[" "," "]}],[{"type":"expr","expression":97,"padding":[" "," "]}],[{"type":"expr","expression":98,"padding":[" "," "]}],[{"type":"expr","expression":99,"padding":[" "," "]}],[{"type":"expr","expression":100,"padding":[" "," "]}],[{"type":"expr","expression":101,"padding":[" "," "]}],[{"type":"expr","expression":102,"padding":[" "," "]}],[{"type":"expr","expression":103,"padding":[" "," "]}],[{"type":"expr","expression":104,"padding":[" "," "]}],[{"type":"expr","expression":105,"padding":[" "," "]}],[{"type":"expr","expression":106,"padding":[" "," "]}],[{"type":"expr","expression":108,"padding":[" "," "]}],[{"type":"expr","expression":113,"padding":[" "," "]}],[{"type":"expr","expression":114,"padding":[" "," "]}],[{"type":"expr","expression":120,"padding":[" "," "]}],[{"type":"expr","expression":121,"padding":[" "," "]}],[{"type":"expr","expression":123,"padding":[" "," "]}],[{"type":"expr","expression":122,"padding":[" "," "]}],[{"type":"expr","expression":124,"padding":[" "," "]}],[{"type":"expr","expression":125,"padding":[" "," "]}],[{"type":"expr","expression":126,"padding":[" "," "]}],[{"type":"expr","expression":127,"padding":[" "," "]}],[{"type":"expr","expression":128,"padding":[" "," "]}],[{"type":"expr","expression":129,"padding":[" "," "]}],[{"type":"expr","expression":130,"padding":[" "," "]}],[{"type":"expr","expression":131,"padding":[" "," "]}],[{"type":"expr","expression":133,"padding":[" "," "]}],[{"type":"expr","expression":132,"padding":[" "," "]}],[{"type":"expr","expression":134,"padding":[" "," "]}],[{"type":"expr","expression":135,"padding":[" "," "]}],[{"type":"expr","expression":136,"padding":[" "," "]}],[{"type":"expr","expression":137,"padding":[" "," "]}],[{"type":"expr","expression":138,"padding":[" "," "]}],[{"type":"expr","expression":139,"padding":[" "," "]}],[{"type":"expr","expression":140,"padding":[" "," "]}],[{"type":"expr","expression":141,"padding":[" "," "]}],[{"type":"expr","expression":142,"padding":[" "," "]}],[{"type":"expr","expression":146,"padding":[" "," "]}],[{"type":"expr","expression":148,"padding":[" "," "]}],[{"type":"expr","expression":149,"padding":[" "," "]}],[{"type":"expr","expression":147,"padding":[" "," "]}],[{"type":"expr","expression":150,"padding":[" "," "]}],[{"type":"expr","expression":152,"padding":[" "," "]}],[{"type":"expr","expression":151,"padding":[" "," "]}],[{"type":"expr","expression":154,"padding":[" "," "]}],[{"type":"expr","expression":155,"padding":[" "," "]}],[{"type":"expr","expression":153,"padding":[" "," "]}],[{"type":"expr","expression":159,"padding":[" "," "]}],[{"type":"expr","expression":160,"padding":[" "," "]}],[{"type":"expr","expression":163,"padding":[" "," "]}],[{"type":"expr","expression":164,"padding":[" "," "]}],[{"type":"expr","expression":168,"padding":[" "," "]}],[{"type":"expr","expression":169,"padding":[" "," "]}],[{"type":"expr","expression":170,"padding":[" "," "]}],[{"type":"expr","expression":178,"padding":[" "," "]}],[{"type":"expr","expression":179,"padding":[" "," "]}],[{"type":"expr","expression":180,"padding":[" "," "]}],[{"type":"expr","expression":181,"padding":[" "," "]}],[{"type":"expr","expression":182,"padding":[" "," "]}],[{"type":"expr","expression":183,"padding":[" "," "]}],[{"type":"expr","expression":184,"padding":[" "," "]}],[{"type":"expr","expression":185,"padding":[" "," "]}],[{"type":"expr","expression":186,"padding":[" "," "]}],[{"type":"expr","expression":188,"padding":[" "," "]}],[{"type":"expr","expression":189,"padding":[" "," "]}],[{"type":"expr","expression":190,"padding":[" "," "]}],[{"type":"expr","expression":191,"padding":[" "," "]}],[{"type":"expr","expression":195,"padding":[" "," "]}],[{"type":"expr","expression":197,"padding":[" "," "]}],[{"type":"expr","expression":196,"padding":[" "," "]}],[{"type":"expr","expression":199,"padding":[" "," "]}],[{"type":"expr","expression":207,"padding":[" "," "]}],[{"type":"expr","expression":208,"padding":[" "," "]}],[{"type":"expr","expression":206,"padding":[" "," "]}],[{"type":"expr","expression":209,"padding":[" "," "]}],[{"type":"expr","expression":210,"padding":[" "," "]}],[{"type":"expr","expression":211,"padding":[" "," "]}],[{"type":"expr","expression":212,"padding":[" "," "]}],[{"type":"expr","expression":213,"padding":[" "," "]}],[{"type":"expr","expression":214,"padding":[" "," "]}],[{"type":"expr","expression":215,"padding":[" "," "]}],[{"type":"expr","expression":216,"padding":[" "," "]}],[{"type":"expr","expression":217,"padding":[" "," "]}],[{"type":"expr","expression":218,"padding":[" "," "]}],[{"type":"expr","expression":219,"padding":[" "," "]}],[{"type":"expr","expression":221,"padding":[" "," "]}],[{"type":"expr","expression":220,"padding":[" "," "]}],[{"type":"expr","expression":222,"padding":[" "," "]}],[{"type":"expr","expression":223,"padding":[" "," "]}],[{"type":"expr","expression":224,"padding":[" "," "]}],[{"type":"expr","expression":225,"padding":[" "," "]}],[{"type":"expr","expression":226,"padding":[" "," "]}],[{"type":"expr","expression":227,"padding":[" "," "]}],[{"type":"expr","expression":228,"padding":[" "," "]}],[{"type":"expr","expression":229,"padding":[" "," "]}],[{"type":"expr","expression":230,"padding":[" "," "]}],[{"type":"expr","expression":231,"padding":[" "," "]}],[{"type":"expr","expression":232,"padding":[" "," "]}],[{"type":"expr","expression":233,"padding":[" "," "]}],[{"type":"expr","expression":235,"padding":[" "," "]}],[{"type":"expr","expression":236,"padding":[" "," "]}],[{"type":"expr","expression":237,"padding":[" "," "]}],[{"type":"expr","expression":234,"padding":[" "," "]}],[{"type":"expr","expression":238,"padding":[" "," "]}],[{"type":"expr","expression":239,"padding":[" "," "]}],[{"type":"expr","expression":240,"padding":[" "," "]}],[{"type":"expr","expression":241,"padding":[" "," "]}],[{"type":"expr","expression":242,"padding":[" "," "]}],[{"type":"expr","expression":244,"padding":[" "," "]}],[{"type":"expr","expression":245,"padding":[" "," "]}],[{"type":"expr","expression":243,"padding":[" "," "]}],[{"type":"expr","expression":247,"padding":[" "," "]}],[{"type":"expr","expression":246,"padding":[" "," "]}],[{"type":"expr","expression":248,"padding":[" "," "]}],[{"type":"expr","expression":250,"padding":[" "," "]}],[{"type":"expr","expression":249,"padding":[" "," "]}],[{"type":"expr","expression":251,"padding":[" "," "]}],[{"type":"expr","expression":252,"padding":[" "," "]}],[{"type":"expr","expression":253,"padding":[" "," "]}],[{"type":"expr","expression":254,"padding":[" "," "]}],[{"type":"expr","expression":255,"padding":[" "," "]}],[{"type":"expr","expression":256,"padding":[" "," "]}],[{"type":"expr","expression":257,"padding":[" "," "]}],[{"type":"expr","expression":258,"padding":[" "," "]}],[{"type":"expr","expression":259,"padding":[" "," "]}],[{"type":"expr","expression":260,"padding":[" "," "]}],[{"type":"expr","expression":261,"padding":[" "," "]}],[{"type":"expr","expression":262,"padding":[" "," "]}],[{"type":"expr","expression":263,"padding":[" "," "]}],[{"type":"expr","expression":264,"padding":[" "," "]}],[{"type":"expr","expression":265,"padding":[" "," "]}],[{"type":"expr","expression":266,"padding":[" "," "]}],[{"type":"expr","expression":267,"padding":[" "," "]}],[{"type":"expr","expression":268,"padding":[" "," "]}],[{"type":"expr","expression":269,"padding":[" "," "]}],[{"type":"expr","expression":270,"padding":[" "," "]}],[{"type":"expr","expression":272,"padding":[" "," "]}],[{"type":"expr","expression":273,"padding":[" "," "]}],[{"type":"expr","expression":271,"padding":[" "," "]}],[{"type":"expr","expression":274,"padding":[" "," "]}],[{"type":"expr","expression":275,"padding":[" "," "]}],[{"type":"expr","expression":276,"padding":[" "," "]}],[{"type":"expr","expression":277,"padding":[" "," "]}],[{"type":"expr","expression":278,"padding":[" "," "]}],[{"type":"expr","expression":279,"padding":[" "," "]}],[{"type":"expr","expression":280,"padding":[" "," "]}],[{"type":"expr","expression":281,"padding":[" "," "]}],[{"type":"expr","expression":282,"padding":[" "," "]}],[{"type":"expr","expression":283,"padding":[" "," "]}],[{"type":"expr","expression":284,"padding":[" "," "]}],[{"type":"expr","expression":285,"padding":[" "," "]}],[{"type":"expr","expression":286,"padding":[" "," "]}],[{"type":"expr","expression":287,"padding":[" "," "]}],[{"type":"expr","expression":288,"padding":[" "," "]}],[{"type":"expr","expression":289,"padding":[" "," "]}],[{"type":"expr","expression":290,"padding":[" "," "]}],[{"type":"expr","expression":291,"padding":[" "," "]}],[{"type":"expr","expression":292,"padding":[" "," "]}],[{"type":"expr","expression":293,"padding":[" "," "]}],[{"type":"expr","expression":294,"padding":[" "," "]}],[{"type":"expr","expression":295,"padding":[" "," "]}],[{"type":"expr","expression":296,"padding":[" "," "]}],[{"type":"expr","expression":297,"padding":[" "," "]}],[{"type":"expr","expression":298,"padding":[" "," "]}],[{"type":"expr","expression":299,"padding":[" "," "]}],[{"type":"expr","expression":300,"padding":[" "," "]}],[{"type":"expr","expression":301,"padding":[" "," "]}],[{"type":"expr","expression":302,"padding":[" "," "]}],[{"type":"expr","expression":303,"padding":[" "," "]}],[{"type":"expr","expression":304,"padding":[" "," "]}],[{"type":"expr","expression":305,"padding":[" "," "]}],[{"type":"expr","expression":306,"padding":[" "," "]}],[{"type":"expr","expression":307,"padding":[" "," "]}],[{"type":"expr","expression":308,"padding":[" "," "]}],[{"type":"expr","expression":309,"padding":[" "," "]}],[{"type":"expr","expression":312,"padding":[" "," "]}],[{"type":"expr","expression":313,"padding":[" "," "]}],[{"type":"expr","expression":315,"padding":[" "," "]}],[{"type":"expr","expression":314,"padding":[" "," "]}],[{"type":"expr","expression":316,"padding":[" "," "]}],[{"type":"expr","expression":317,"padding":[" "," "]}],[{"type":"expr","expression":318,"padding":[" "," "]}],[{"type":"expr","expression":319,"padding":[" "," "]}],[{"type":"expr","expression":321,"padding":[" "," "]}],[{"type":"expr","expression":323,"padding":[" "," "]}],[{"type":"expr","expression":322,"padding":[" "," "]}],[{"type":"expr","expression":320,"padding":[" "," "]}],[{"type":"expr","expression":324,"padding":[" "," "]}],[{"type":"expr","expression":325,"padding":[" "," "]}],[{"type":"expr","expression":327,"padding":[" "," "]}],[{"type":"expr","expression":326,"padding":[" "," "]}],[{"type":"expr","expression":328,"padding":[" "," "]}],[{"type":"expr","expression":329,"padding":[" "," "]}],[{"type":"expr","expression":330,"padding":[" "," "]}],[{"type":"expr","expression":331,"padding":[" "," "]}],[{"type":"expr","expression":332,"padding":[" "," "]}],[{"type":"expr","expression":333,"padding":[" "," "]}],[{"type":"expr","expression":334,"padding":[" "," "]}],[{"type":"expr","expression":336,"padding":[" "," "]}],[{"type":"expr","expression":339,"padding":[" "," "]}],[{"type":"expr","expression":340,"padding":[" "," "]}],[{"type":"expr","expression":341,"padding":[" "," "]}],[{"type":"expr","expression":342,"padding":[" "," "]}],[{"type":"expr","expression":343,"padding":[" "," "]}],[{"type":"expr","expression":344,"padding":[" "," "]}],[{"type":"expr","expression":345,"padding":[" "," "]}],[{"type":"expr","expression":346,"padding":[" "," "]}],[{"type":"expr","expression":347,"padding":[" "," "]}],[{"type":"expr","expression":348,"padding":[" "," "]}],[{"type":"expr","expression":349,"padding":[" "," "]}],[{"type":"expr","expression":350,"padding":[" "," "]}],[{"type":"expr","expression":351,"padding":[" "," "]}],[{"type":"expr","expression":352,"padding":[" "," "]}],[{"type":"expr","expression":353,"padding":[" "," "]}],[{"type":"expr","expression":354,"padding":[" "," "]}],[{"type":"expr","expression":355,"padding":[" "," "]}],[{"type":"expr","expression":356,"padding":[" "," "]}],[{"type":"expr","expression":357,"padding":[" "," "]}],[{"type":"expr","expression":358,"padding":[" "," "]}],[{"type":"expr","expression":359,"padding":[" "," "]}],[{"type":"expr","expression":360,"padding":[" "," "]}],[{"type":"expr","expression":362,"padding":[" "," "]}],[{"type":"expr","expression":363,"padding":[" "," "]}],[{"type":"expr","expression":370,"padding":[" "," "]}],[{"type":"expr","expression":371,"padding":[" "," "]}],[{"type":"expr","expression":372,"padding":[" "," "]}],[{"type":"expr","expression":373,"padding":[" "," "]}],[{"type":"expr","expression":375,"padding":[" "," "]}],[{"type":"expr","expression":374,"padding":[" "," "]}],[{"type":"expr","expression":376,"padding":[" "," "]}],[{"type":"expr","expression":377,"padding":[" "," "]}],[{"type":"expr","expression":379,"padding":[" "," "]}],[{"type":"expr","expression":378,"padding":[" "," "]}],[{"type":"expr","expression":380,"padding":[" "," "]}],[{"type":"expr","expression":389,"padding":[" "," "]}],[{"type":"expr","expression":390,"padding":[" "," "]}],[{"type":"expr","expression":391,"padding":[" "," "]}],[{"type":"expr","expression":393,"padding":[" "," "]}],[{"type":"expr","expression":394,"padding":[" "," "]}],[{"type":"expr","expression":395,"padding":[" "," "]}],[{"type":"expr","expression":396,"padding":[" "," "]}],[{"type":"expr","expression":398,"padding":[" "," "]}],[{"type":"expr","expression":399,"padding":[" "," "]}],[{"type":"expr","expression":400,"padding":[" "," "]}],[{"type":"expr","expression":401,"padding":[" "," "]}],[{"type":"expr","expression":402,"padding":[" "," "]}],[{"type":"expr","expression":403,"padding":[" "," "]}],[{"type":"expr","expression":404,"padding":[" "," "]}],[{"type":"expr","expression":405,"padding":[" "," "]}],[{"type":"expr","expression":406,"padding":[" "," "]}],[{"type":"expr","expression":407,"padding":[" "," "]}],[{"type":"expr","expression":408,"padding":[" "," "]}],[{"type":"expr","expression":409,"padding":[" "," "]}],[{"type":"expr","expression":410,"padding":[" "," "]}],[{"type":"expr","expression":411,"padding":[" "," "]}],[{"type":"expr","expression":412,"padding":[" "," "]}],[{"type":"expr","expression":413,"padding":[" "," "]}],[{"type":"expr","expression":414,"padding":[" "," "]}],[{"type":"expr","expression":415,"padding":[" "," "]}],[{"type":"expr","expression":416,"padding":[" "," "]}],[{"type":"expr","expression":418,"padding":[" "," "]}],[{"type":"expr","expression":417,"padding":[" "," "]}],[{"type":"expr","expression":419,"padding":[" "," "]}],[{"type":"expr","expression":420,"padding":[" "," "]}],[{"type":"expr","expression":421,"padding":[" "," "]}],[{"type":"expr","expression":423,"padding":[" "," "]}],[{"type":"expr","expression":422,"padding":[" "," "]}],[{"type":"expr","expression":424,"padding":[" "," "]}],[{"type":"expr","expression":426,"padding":[" "," "]}],[{"type":"expr","expression":425,"padding":[" "," "]}],[{"type":"expr","expression":427,"padding":[" "," "]}],[{"type":"expr","expression":428,"padding":[" "," "]}],[{"type":"expr","expression":429,"padding":[" "," "]}],[{"type":"expr","expression":430,"padding":[" "," "]}],[{"type":"expr","expression":431,"padding":[" "," "]}],[{"type":"expr","expression":433,"padding":[" "," "]}],[{"type":"expr","expression":434,"padding":[" "," "]}],[{"type":"expr","expression":436,"padding":[" "," "]}],[{"type":"expr","expression":435,"padding":[" "," "]}],[{"type":"expr","expression":432,"padding":[" "," "]}],[{"type":"expr","expression":438,"padding":[" "," "]}],[{"type":"expr","expression":439,"padding":[" "," "]}],[{"type":"expr","expression":440,"padding":[" "," "]}],[{"type":"expr","expression":442,"padding":[" "," "]}],[{"type":"expr","expression":441,"padding":[" "," "]}],[{"type":"expr","expression":443,"padding":[" "," "]}],[{"type":"expr","expression":444,"padding":[" "," "]}],[{"type":"expr","expression":445,"padding":[" "," "]}],[{"type":"expr","expression":446,"padding":[" "," "]}],[{"type":"expr","expression":447,"padding":[" "," "]}],[{"type":"expr","expression":448,"padding":[" "," "]}],[{"type":"expr","expression":449,"padding":[" "," "]}],[{"type":"expr","expression":450,"padding":[" "," "]}],[{"type":"expr","expression":451,"padding":[" "," "]}],[{"type":"expr","expression":452,"padding":[" "," "]}],[{"type":"expr","expression":453,"padding":[" "," "]}],[{"type":"expr","expression":454,"padding":[" "," "]}],[{"type":"expr","expression":455,"padding":[" "," "]}],[{"type":"expr","expression":456,"padding":[" "," "]}],[{"type":"expr","expression":457,"padding":[" "," "]}],[{"type":"expr","expression":458,"padding":[" "," "]}],[{"type":"expr","expression":460,"padding":[" "," "]}],[{"type":"expr","expression":459,"padding":[" "," "]}],[{"type":"expr","expression":461,"padding":[" "," "]}],[{"type":"expr","expression":463,"padding":[" "," "]}],[{"type":"expr","expression":462,"padding":[" "," "]}],[{"type":"expr","expression":465,"padding":[" "," "]}],[{"type":"expr","expression":464,"padding":[" "," "]}],[{"type":"expr","expression":467,"padding":[" "," "]}],[{"type":"expr","expression":466,"padding":[" "," "]}],[{"type":"expr","expression":468,"padding":[" "," "]}],[{"type":"expr","expression":469,"padding":[" "," "]}],[{"type":"expr","expression":470,"padding":[" "," "]}],[{"type":"expr","expression":471,"padding":[" "," "]}],[{"type":"expr","expression":472,"padding":[" "," "]}]]},"state":{"identities":[],"contracts":{"version":null,"invariants":[],"migrations":[]},"analysis":{"version":null,"invariants":[],"migrations":[]},"invariants":[],"migrations":[]},"routes":{"declared":true,"table":[{"pattern":"/","segs":[],"name":"home","chain":["home"],"params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"Home"},"warm":false},{"pattern":"/cart","segs":["cart"],"name":"cart","chain":["cart"],"params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"CartPage"},"warm":false},{"pattern":"/contact","segs":["contact"],"name":"contact","chain":["contact"],"params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"ContactPage"},"warm":false},{"pattern":"/inventory","segs":["inventory"],"name":"inventory","chain":["inventory"],"params":{},"query":{"category":"string","promotion":"string"},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"InventoryPage","props":{"category":"{{ route.query.category ?? '' }}","promotion":"{{ route.query.promotion ?? '' }}"}},"warm":false},{"pattern":"/inventory/:id","segs":["inventory",":id"],"name":"product","chain":["product"],"params":{"id":"string"},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"ProductPage","props":{"id":"{{ route.params.id }}"}},"warm":false}],"analysis":{"routes":[{"pattern":"/","name":"home","params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"Home"},"warm":false,"chain":["home"],"parent":null,"dynamic":false,"shadowedBy":null},{"pattern":"/cart","name":"cart","params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"CartPage"},"warm":false,"chain":["cart"],"parent":null,"dynamic":false,"shadowedBy":null},{"pattern":"/contact","name":"contact","params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"ContactPage"},"warm":false,"chain":["contact"],"parent":null,"dynamic":false,"shadowedBy":null},{"pattern":"/inventory","name":"inventory","params":{},"query":{"category":"string","promotion":"string"},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"InventoryPage","props":{"category":"{{ route.query.category ?? '' }}","promotion":"{{ route.query.promotion ?? '' }}"}},"warm":false,"chain":["inventory"],"parent":null,"dynamic":false,"shadowedBy":null},{"pattern":"/inventory/:id","name":"product","params":{"id":"string"},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"ProductPage","props":{"id":"{{ route.params.id }}"}},"warm":false,"chain":["product"],"parent":null,"dynamic":true,"shadowedBy":null}],"componentEdges":[{"from":"/","to":"Home","rel":"screen"},{"from":"/cart","to":"CartPage","rel":"screen"},{"from":"/contact","to":"ContactPage","rel":"screen"},{"from":"/inventory","to":"InventoryPage","rel":"screen"},{"from":"/inventory/:id","to":"ProductPage","rel":"screen"}],"guarded":[],"redirects":[],"names":["home","cart","contact","inventory","product"]},"reachability":{"nodes":[{"pattern":"/","name":"home","params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"Home"},"warm":false,"chain":["home"],"parent":null,"dynamic":false,"shadowedBy":null,"deepLinkable":true},{"pattern":"/cart","name":"cart","params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"CartPage"},"warm":false,"chain":["cart"],"parent":null,"dynamic":false,"shadowedBy":null,"deepLinkable":true},{"pattern":"/contact","name":"contact","params":{},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"ContactPage"},"warm":false,"chain":["contact"],"parent":null,"dynamic":false,"shadowedBy":null,"deepLinkable":true},{"pattern":"/inventory","name":"inventory","params":{},"query":{"category":"string","promotion":"string"},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"InventoryPage","props":{"category":"{{ route.query.category ?? '' }}","promotion":"{{ route.query.promotion ?? '' }}"}},"warm":false,"chain":["inventory"],"parent":null,"dynamic":false,"shadowedBy":null,"deepLinkable":true},{"pattern":"/inventory/:id","name":"product","params":{"id":"string"},"query":{},"guard":null,"redirect":null,"layouts":[],"screen":{"component":"ProductPage","props":{"id":"{{ route.params.id }}"}},"warm":false,"chain":["product"],"parent":null,"dynamic":true,"shadowedBy":null,"deepLinkable":true}],"edges":[{"from":null,"to":["home"],"via":"/","dynamic":false},{"from":null,"to":["home","cart","contact","inventory","product"],"via":"{{ item.href }}","dynamic":true,"repeat":{"as":"item","items":"{{ constants.navItems }}"}},{"from":null,"to":["cart"],"via":"/cart","dynamic":false},{"from":null,"to":["home","cart","contact","inventory","product"],"via":"{{ item.href }}","dynamic":true,"repeat":{"as":"item","items":"{{ constants.navItems }}"}},{"from":null,"to":["cart"],"via":"/cart","dynamic":false},{"from":["home"],"to":["inventory"],"via":"/inventory","dynamic":false},{"from":["home"],"to":["contact"],"via":"/contact","dynamic":false},{"from":["home"],"to":["inventory"],"via":"/inventory","dynamic":false},{"from":["home"],"to":["home","cart","contact","inventory","product"],"via":"{{ '/inventory?promotion=' + set.promoId }}","dynamic":true,"repeat":{"as":"set","items":"{{ promoSets }}"}},{"from":["home"],"to":["home","cart","contact","inventory","product"],"via":"{{ '/inventory?category=' + cat.id }}","dynamic":true,"repeat":{"as":"cat","items":"{{ stockedCategories }}"}},{"from":["home"],"to":["contact"],"via":"/contact","dynamic":false},{"from":["home"],"to":["home","cart","contact","inventory","product"],"via":"{{ telHref }}","dynamic":true},{"from":["cart"],"to":["inventory"],"via":"/inventory","dynamic":false},{"from":["cart"],"to":["home","cart","contact","inventory","product"],"via":"{{ telHref }}","dynamic":true},{"from":["cart"],"to":["inventory"],"via":"/inventory","dynamic":false},{"from":["cart"],"to":["home","cart","contact","inventory","product"],"via":"{{ '/inventory/' + it.id }}","dynamic":true,"repeat":{"as":"it","items":"{{ state.cart }}"}},{"from":["contact"],"to":["home","cart","contact","inventory","product"],"via":"{{ telHref }}","dynamic":true},{"from":["contact"],"to":["home","cart","contact","inventory","product"],"via":"{{ 'mailto:' + locEmail }}","dynamic":true},{"from":["inventory"],"to":["inventory"],"via":"/inventory","dynamic":false},{"from":["inventory"],"to":["contact"],"via":"/contact","dynamic":false},{"from":["inventory"],"to":["home","cart","contact","inventory","product"],"via":"{{ $4d90eda5$href }}","dynamic":true},{"from":["inventory"],"to":["home","cart","contact","inventory","product"],"via":"{{ $4d90eda5$href }}","dynamic":true},{"from":["inventory"],"to":["home","cart","contact","inventory","product"],"via":"{{ $4d90eda5$href }}","dynamic":true},{"from":["product"],"to":["inventory"],"via":"/inventory","dynamic":false},{"from":["product"],"to":["inventory"],"via":"/inventory","dynamic":false},{"from":["product"],"to":["home","cart","contact","inventory","product"],"via":"{{ '/inventory?category=' + (findBy(invRows, 'id', route.params.id)).wholegood.categoryId }}","dynamic":true},{"from":["product"],"to":["home","cart","contact","inventory","product"],"via":"{{ '/inventory?promotion=' + pid }}","dynamic":true,"repeat":{"as":"pid","items":"{{ $aa7eee53$promoIds }}"}},{"from":["product"],"to":["cart"],"via":"/cart","dynamic":false},{"from":["product"],"to":["home","cart","contact","inventory","product"],"via":"{{ $4d90eda5$href }}","dynamic":true},{"from":["product"],"to":["home","cart","contact","inventory","product"],"via":"{{ $4d90eda5$href }}","dynamic":true},{"from":["product"],"to":["home","cart","contact","inventory","product"],"via":"{{ $4d90eda5$href }}","dynamic":true},{"from":null,"to":["home","cart","contact","inventory","product"],"via":"{{ item.href }}","dynamic":true,"repeat":{"as":"item","items":"{{ constants.navItems }}"}},{"from":null,"to":["cart"],"via":"/cart","dynamic":false},{"from":null,"to":["home","cart","contact","inventory","product"],"via":"{{ telHref }}","dynamic":true},{"from":null,"to":["home","cart","contact","inventory","product"],"via":"{{ 'mailto:' + locEmail }}","dynamic":true},{"from":null,"to":["contact"],"via":"/contact","dynamic":false}],"componentEdges":[{"from":"/","to":"Home","rel":"screen"},{"from":"/cart","to":"CartPage","rel":"screen"},{"from":"/contact","to":"ContactPage","rel":"screen"},{"from":"/inventory","to":"InventoryPage","rel":"screen"},{"from":"/inventory/:id","to":"ProductPage","rel":"screen"}],"entry":"home","reachable":["home","cart","contact","inventory","product"],"orphans":[],"deadEnds":[],"guarded":[],"summary":{"routes":5,"reachable":5,"orphans":0,"deadEnds":0,"guarded":0,"edges":36}}},"head":{"base":{"og":{},"twitter":{},"meta":[],"links":[],"title":"Garland Saw & Lawnmower · STIHL, Toro & Husqvarna in Garland, TX","description":"Family-owned outdoor power equipment dealer in historic downtown Garland, TX. Browse inventory, reserve for pickup, and get parts and service.","lang":"en","viewport":"width=device-width, initial-scale=1","themeColor":"#d85b08","colorScheme":"light"},"baseFields":["colorScheme","description","lang","themeColor","title","viewport"],"routes":[{"pattern":"/cart","name":"cart","head":{"og":{},"twitter":{},"meta":[],"links":[],"title":"Pickup cart · Gridline Power Equipment"}},{"pattern":"/contact","name":"contact","head":{"og":{},"twitter":{},"meta":[],"links":[],"title":"Contact & about · Gridline Power Equipment"}},{"pattern":"/inventory","name":"inventory","head":{"og":{},"twitter":{},"meta":[],"links":[],"title":"Inventory · Gridline Power Equipment"}},{"pattern":"/inventory/:id","name":"product","head":{"og":{},"twitter":{},"meta":[],"links":[],"title":"Equipment details · Gridline Power Equipment"}}]},"resume":{"events":["change","click","input","keydown","submit"],"hasUse":true},"triggers":{"decls":[],"attachments":{"clock":[],"commit":[],"inbox":[],"durable-schedule":[]},"durableCount":0,"durableSchedules":[]},"agents":{"decls":[],"declared":false,"webSearchGranted":false},"motion":{"structural":{"exit":[["scrimOut",{"keyframes":[{"offset":0,"opacity":"1"},{"offset":1,"opacity":"0"}],"options":{"duration":140,"easing":"ease-in","delay":0,"iterations":1,"direction":"normal","fill":"both"},"reduce":"keep","reduceKeyframes":null,"reduceOptions":null}]],"move":[]},"runtime":[]},"dataDemand":{"bindings":[{"slot":"categories","collection":"categories","key":"id","name":"categories","source":"opehub","live":false,"access":{"read":[{"actors":["visitor"]}]},"scopes":{},"fields":{"brandId":{"type":"string","optional":false},"catalogId":{"type":"string","optional":false},"id":{"type":"string","optional":false},"mediaFile":{"type":"object","optional":true},"name":{"type":"string","optional":false},"weight":{"type":"number","optional":false}},"mutations":{},"paged":false,"notify":{"ok":null,"problem":"silent"}},{"slot":"contactMessages","collection":"messages","key":"id","name":"contact","source":"formEmail","live":false,"access":{"read":[{"actors":["visitor"]}],"create":[{"actors":["visitor"]}]},"scopes":{},"fields":{"email":{"type":"string","optional":false},"id":{"type":"string","optional":false},"message":{"type":"string","optional":false},"name":{"type":"string","optional":false},"phone":{"type":"string","optional":true},"topic":{"type":"string","optional":false}},"mutations":{"create":{"fields":["name","email","phone","topic","message"],"required":[]}},"paged":false,"notify":{"ok":null,"problem":"silent"}},{"slot":"dealer","collection":"dealer","key":"id","name":"dealer","source":"opehub","live":false,"access":{"read":[{"actors":["visitor"]}]},"scopes":{},"fields":{"branding":{"type":"object","optional":true},"id":{"type":"string","optional":false},"locations":{"type":"array","optional":false},"logo":{"type":"object","optional":true},"name":{"type":"string","optional":false},"website":{"type":"string","optional":true}},"mutations":{},"paged":false,"notify":{"ok":null,"problem":"silent"}},{"slot":"inventory","collection":"inventory","key":"id","name":"inventory","source":"opehub","live":false,"access":{"read":[{"actors":["visitor"]}]},"scopes":{},"fields":{"addOns":{"type":"array","optional":false},"adjustments":{"type":"array","optional":false},"cashPrice":{"type":"number","optional":true},"condition":{"type":"string","optional":false},"createdAt":{"type":"string","optional":false},"description":{"type":"string","optional":false},"finance":{"type":"object","optional":true},"hours":{"type":"number","optional":true},"id":{"type":"string","optional":false},"locationId":{"type":"string","optional":false},"media":{"type":"array","optional":false},"mediaFile":{"type":"object","optional":true},"name":{"type":"string","optional":false},"price":{"type":"number","optional":false},"promotionIds":{"type":"array","optional":false},"status":{"type":"string","optional":false},"stockNumber":{"type":"string","optional":true},"updatedAt":{"type":"string","optional":false},"wholegood":{"type":"object","optional":false}},"mutations":{},"paged":false,"notify":{"ok":null,"problem":"silent"}},{"slot":"leads","collection":"websiteLeads","key":"id","name":"leads","source":"opehubLeads","live":false,"access":{"read":[{"actors":["visitor"]}],"create":[{"actors":["visitor"]}]},"scopes":{},"fields":{"addOnSelections":{"type":"array","optional":true},"contact":{"type":"object","optional":false},"customerName":{"type":"string","optional":false},"id":{"type":"string","optional":false},"inventoryIds":{"type":"array","optional":false}},"mutations":{"create":{"fields":["customerName","contact","inventoryIds","addOnSelections"],"required":["customerName","contact","inventoryIds"]}},"paged":false,"notify":{"ok":null,"problem":"silent"}},{"slot":"promotions","collection":"promotions","key":"id","name":"promotions","source":"opehub","live":false,"access":{"read":[{"actors":["visitor"]}]},"scopes":{},"fields":{"brandId":{"type":"string","optional":false},"description":{"type":"string","optional":false},"discount":{"type":"number","optional":false},"ends":{"type":"string","optional":false},"id":{"type":"string","optional":false},"inventoryCount":{"type":"number","optional":false},"name":{"type":"string","optional":false},"starts":{"type":"string","optional":false},"type":{"type":"string","optional":false},"weight":{"type":"number","optional":false}},"mutations":{},"paged":false,"notify":{"ok":null,"problem":"silent"}},{"slot":"websiteContent","collection":"websiteContent","key":"revision","name":"websiteContent","source":"opehub","live":false,"access":{"read":[{"actors":["visitor"]}]},"scopes":{},"fields":{"builtAt":{"type":"string","optional":false},"mediaSets":{"type":"array","optional":false},"revision":{"type":"string","optional":false},"validUntil":{"type":"string","optional":false}},"mutations":{},"paged":false,"notify":{"ok":null,"problem":"silent"}},{"slot":"wholegoods","collection":"wholegoods","key":"id","name":"wholegoods","source":"opehub","query":{"catalog":"{{ state.viewingCatalog }}"},"live":false,"access":{"read":[{"actors":["visitor"]}]},"scopes":{},"fields":{"attachment":{"type":"boolean","optional":false},"brandId":{"type":"string","optional":false},"catalogId":{"type":"string","optional":false},"categoryId":{"type":"string","optional":false},"emissionCode":{"type":"string","optional":true},"features":{"type":"array","optional":false},"fitsWholegoodIds":{"type":"array","optional":false},"id":{"type":"string","optional":false},"mediaFile":{"type":"object","optional":true},"name":{"type":"string","optional":false},"pricing":{"type":"object","optional":false},"resources":{"type":"array","optional":false},"sku":{"type":"string","optional":false},"specs":{"type":"array","optional":false},"subCategoryId":{"type":"string","optional":false},"subtitle":{"type":"string","optional":true},"weight":{"type":"number","optional":false}},"mutations":{},"paged":false,"notify":{"ok":null,"problem":"silent"}}],"computed":[{"cell":"availableRows","data":[],"computed":["invRows"],"conservative":false},{"cell":"brandAccent","data":[],"computed":["dealerRow"],"conservative":false},{"cell":"brandBg","data":[],"computed":["dealerRow"],"conservative":false},{"cell":"brandMain","data":[],"computed":["dealerRow"],"conservative":false},{"cell":"cartIds","data":[],"computed":[],"conservative":false},{"cell":"cartSelections","data":[],"computed":[],"conservative":false},{"cell":"cartSubtotal","data":[],"computed":[],"conservative":false},{"cell":"catCounts","data":[],"computed":["catUnits"],"conservative":false},{"cell":"catFirstUnit","data":[],"computed":["catOwnThumb"],"conservative":false},{"cell":"catFlags","data":[],"computed":["catCounts"],"conservative":false},{"cell":"catOwnThumb","data":[],"computed":["catFlags"],"conservative":false},{"cell":"catUnitThumb","data":[],"computed":["catFirstUnit"],"conservative":false},{"cell":"catUnits","data":["categories"],"computed":["availableRows"],"conservative":false},{"cell":"coBusy","data":[],"computed":[],"conservative":false},{"cell":"coContactErr","data":[],"computed":[],"conservative":false},{"cell":"coNameErr","data":[],"computed":[],"conservative":false},{"cell":"coProblem","data":[],"computed":[],"conservative":false},{"cell":"coReady","data":[],"computed":["coContactErr","coNameErr"],"conservative":false},{"cell":"copyrightYear","data":[],"computed":[],"conservative":false},{"cell":"ctEmailErr","data":[],"computed":[],"conservative":false},{"cell":"ctMsgErr","data":[],"computed":[],"conservative":false},{"cell":"ctNameErr","data":[],"computed":[],"conservative":false},{"cell":"ctProblem","data":[],"computed":[],"conservative":false},{"cell":"dealerLogoUrl","data":[],"computed":["dealerRow"],"conservative":false},{"cell":"dealerName","data":[],"computed":["dealerRow"],"conservative":false},{"cell":"dealerRow","data":["dealer"],"computed":[],"conservative":false},{"cell":"directionsUrl","data":[],"computed":["locFull"],"conservative":false},{"cell":"invBrand","data":[],"computed":["invCat"],"conservative":false},{"cell":"invCat","data":["inventory"],"computed":[],"conservative":false},{"cell":"invRows","data":[],"computed":["invBrand"],"conservative":false},{"cell":"locAddress","data":[],"computed":["location"],"conservative":false},{"cell":"locCity","data":[],"computed":["location"],"conservative":false},{"cell":"locCityLine","data":[],"computed":["locCity","locState","locZip"],"conservative":false},{"cell":"locEmail","data":[],"computed":["location"],"conservative":false},{"cell":"locFull","data":[],"computed":["locAddress","locCityLine"],"conservative":false},{"cell":"locPhone","data":[],"computed":["location"],"conservative":false},{"cell":"locState","data":[],"computed":["location"],"conservative":false},{"cell":"locZip","data":[],"computed":["location"],"conservative":false},{"cell":"location","data":[],"computed":["dealerRow"],"conservative":false},{"cell":"mediaSets","data":["websiteContent"],"computed":[],"conservative":false},{"cell":"pickAddOns","data":[],"computed":["pickRow"],"conservative":false},{"cell":"pickFlags","data":[],"computed":["pickAddOns"],"conservative":false},{"cell":"pickPriced","data":[],"computed":["pickFlags"],"conservative":false},{"cell":"pickRow","data":["inventory"],"computed":[],"conservative":false},{"cell":"pickedAddOns","data":[],"computed":["pickPriced"],"conservative":false},{"cell":"pickedTotal","data":[],"computed":["pickedAddOns"],"conservative":false},{"cell":"promoSets","data":[],"computed":["setImgSrc"],"conservative":false},{"cell":"setDesktop","data":[],"computed":["setPromo"],"conservative":false},{"cell":"setFirst","data":[],"computed":["setMobile"],"conservative":false},{"cell":"setImg","data":[],"computed":["setPickMobile"],"conservative":false},{"cell":"setImgMobile","data":[],"computed":["setImg"],"conservative":false},{"cell":"setImgSrc","data":[],"computed":["setImgMobile"],"conservative":false},{"cell":"setMobile","data":[],"computed":["setDesktop"],"conservative":false},{"cell":"setPick","data":[],"computed":["setFirst"],"conservative":false},{"cell":"setPickMobile","data":[],"computed":["setPick"],"conservative":false},{"cell":"setPromo","data":[],"computed":["mediaSets"],"conservative":false},{"cell":"stockedCategories","data":[],"computed":["catUnitThumb"],"conservative":false},{"cell":"telHref","data":[],"computed":["locPhone"],"conservative":false}],"queries":[{"slot":"categories","data":[]},{"slot":"contactMessages","data":[]},{"slot":"dealer","data":[]},{"slot":"inventory","data":[]},{"slot":"leads","data":[]},{"slot":"promotions","data":[]},{"slot":"websiteContent","data":[]},{"slot":"wholegoods","data":[]}],"standing":[],"triggers":[],"agents":[]},"scope":{"computed":{"cells":{"availableRows":"{{ filterBy(invRows, 'status', 'available') }}","brandAccent":"{{ get(dealerRow, 'branding.colors.accent', '') ?? '' }}","brandBg":"{{ get(dealerRow, 'branding.colors.background', '') ?? '' }}","brandMain":"{{ get(dealerRow, 'branding.colors.main', '') ?? '' }}","cartIds":"{{ pluck(state.cart, 'id') }}","cartSelections":"{{ pluck(filterBy(state.cart, 'hasAddOns', true), 'selection') }}","cartSubtotal":"{{ count(state.cart) == 0 ? 0 : sumBy(state.cart, 'price') + sumBy(state.cart, 'addOnTotal') }}","catCounts":{"args":{"v":"$cat.units"},"fn":"count","over":{"as":"cat","items":"$catUnits"},"set":"unitCount"},"catFirstUnit":{"args":{"list":"$cat.units"},"fn":"first","over":{"as":"cat","items":"$catOwnThumb"},"set":"firstUnit"},"catFlags":{"args":{"a":"$cat.unitCount","b":0},"fn":"gt","over":{"as":"cat","items":"$catCounts"},"set":"hasStock"},"catOwnThumb":{"args":{"dflt":"","obj":"$cat","path":"mediaFile.urls.card"},"fn":"get","over":{"as":"cat","items":"$catFlags"},"set":"thumbUrl"},"catUnitThumb":{"args":{"dflt":"","obj":"$cat.firstUnit","path":"mediaFile.urls.card"},"fn":"get","over":{"as":"cat","items":"$catFirstUnit"},"set":"unitThumbUrl"},"catUnits":{"args":{"key":"categoryId","list":"$availableRows","value":"$cat.id"},"fn":"filterBy","over":{"as":"cat","items":"$state.categories"},"set":"units"},"coBusy":"{{ fx.leads.busy }}","coContactErr":"{{ trim(state.checkout.email) == '' && trim(state.checkout.phone) == '' ? 'Add an email or phone so we can confirm your order.' : (trim(state.checkout.email) != '' && (!contains(state.checkout.email, '@') || !contains(state.checkout.email, '.')) ? 'That email looks incomplete.' : '') }}","coNameErr":"{{ trim(state.checkout.name) == '' ? 'Tell us who will pick it up.' : '' }}","coProblem":"{{ fx.leads.effect == 'write' ? fx.leads.problem : null }}","coReady":"{{ coNameErr == '' && coContactErr == '' && count(state.cart) > 0 }}","copyrightYear":"{{ state.renderedAt != null ? formatDate(state.renderedAt, 'YYYY') : '' }}","ctEmailErr":"{{ trim(state.contactForm.email) == '' ? 'We need an email to reply.' : ((!contains(state.contactForm.email, '@') || !contains(state.contactForm.email, '.')) ? 'That email looks incomplete.' : '') }}","ctMsgErr":"{{ trim(state.contactForm.message) == '' ? 'Add a short message.' : '' }}","ctNameErr":"{{ trim(state.contactForm.name) == '' ? 'Tell us your name.' : '' }}","ctProblem":"{{ fx.contact.effect == 'write' ? fx.contact.problem : null }}","dealerLogoUrl":"{{ get(dealerRow, 'logo.urls.large', '') ?? '' }}","dealerName":"{{ get(dealerRow, 'name', 'Garland Saw & Lawnmower') ?? 'Garland Saw & Lawnmower' }}","dealerRow":"{{ first(state.dealer) }}","directionsUrl":"{{ 'https://www.google.com/maps/dir/?api=1&destination=' + replace(locFull, ' ', '+') }}","invBrand":{"expr":"{{ row.wholegood.brandId }}","over":{"as":"row","items":"$invCat"},"set":"brandId"},"invCat":{"expr":"{{ row.wholegood.categoryId }}","over":{"as":"row","items":"$state.inventory"},"set":"categoryId"},"invRows":{"args":{"arr":"$row.promotionIds","sep":"|"},"fn":"join","over":{"as":"row","items":"$invBrand"},"set":"promoKey"},"locAddress":"{{ get(location, 'address', '') ?? '' }}","locCity":"{{ get(location, 'city', '') ?? '' }}","locCityLine":"{{ locCity + ', ' + locState + ' ' + locZip }}","locEmail":"{{ get(location, 'email', '') ?? '' }}","locFull":"{{ locAddress == '' ? '' : locAddress + ', ' + locCityLine }}","locPhone":"{{ get(location, 'phone', '') ?? '' }}","locState":"{{ get(location, 'state', '') ?? '' }}","locZip":"{{ get(location, 'zip', '') ?? '' }}","location":"{{ first(get(dealerRow, 'locations', []) ?? []) }}","mediaSets":"{{ get(first(state.websiteContent), 'mediaSets', []) ?? [] }}","pickAddOns":"{{ get(pickRow, 'addOns', []) ?? [] }}","pickFlags":{"args":{"arr":"$state.addOnPick.ids","v":"$a.id"},"fn":"includes","over":{"as":"a","items":"$pickAddOns"},"set":"picked"},"pickPriced":{"expr":"{{ a.price ?? 0 }}","over":{"as":"a","items":"$pickFlags"},"set":"priceOrZero"},"pickRow":"{{ findBy(state.inventory, 'id', state.addOnPick.inventoryId) }}","pickedAddOns":"{{ filterBy(pickPriced, 'picked', true) }}","pickedTotal":"{{ sumBy(pickedAddOns, 'priceOrZero') }}","promoSets":"{{ uniqueBy(nth(partition(setImgSrc, 'promoId', ''), 1) ?? [], 'promoId') }}","setDesktop":{"args":{"key":"role","list":"$set.hero","value":"desktop"},"fn":"findBy","over":{"as":"set","items":"$setPromo"},"set":"heroDesktop"},"setFirst":{"args":{"list":"$set.hero"},"fn":"first","over":{"as":"set","items":"$setMobile"},"set":"heroFirst"},"setImg":{"expr":"{{ set.heroPick != null ? set.heroPick.file.urls.phone + ' 640w, ' + set.heroPick.file.urls.tablet + ' 1024w, ' + set.heroPick.file.urls.desktop + ' 1920w' : '' }}","over":{"as":"set","items":"$setPickMobile"},"set":"imgSrcset"},"setImgMobile":{"expr":"{{ set.heroPickMobile != null ? set.heroPickMobile.file.urls.phone + ' 640w, ' + set.heroPickMobile.file.urls.tablet + ' 1024w, ' + set.heroPickMobile.file.urls.desktop + ' 1920w' : '' }}","over":{"as":"set","items":"$setImg"},"set":"imgMobileSrcset"},"setImgSrc":{"expr":"{{ set.heroPick != null ? set.heroPick.file.urls.desktop : '' }}","over":{"as":"set","items":"$setImgMobile"},"set":"imgSrc"},"setMobile":{"args":{"key":"role","list":"$set.hero","value":"mobile"},"fn":"findBy","over":{"as":"set","items":"$setDesktop"},"set":"heroMobile"},"setPick":{"args":{"vals":["$set.heroDesktop","$set.heroFirst"]},"fn":"coalesce","over":{"as":"set","items":"$setFirst"},"set":"heroPick"},"setPickMobile":{"args":{"vals":["$set.heroMobile","$set.heroPick"]},"fn":"coalesce","over":{"as":"set","items":"$setPick"},"set":"heroPickMobile"},"setPromo":{"args":{"dflt":"","obj":"$set","path":"promotion.id"},"fn":"get","over":{"as":"set","items":"$mediaSets"},"set":"promoId"},"stockedCategories":"{{ sortBy(filterBy(catUnitThumb, 'hasStock', true), 'weight') }}","telHref":"{{ 'tel:' + locPhone }}","$5f14c0d2$cartCount":"{{ count(state.cart) }}","$d0a77e9d$img":"{{ cat.thumbUrl != '' ? cat.thumbUrl : cat.unitThumbUrl }}","$ee11ec3e$ownPhoto":"{{ cat.thumbUrl != '' }}","$f95d22fe$base":"{{ (route.query.promotion ?? '') == '' ? availableRows : searchBy(availableRows, 'promoKey', (route.query.promotion ?? '')) }}","$266edf45$byCat":"{{ (route.query.category ?? '') == '' ? $f95d22fe$base : filterBy($f95d22fe$base, 'categoryId', (route.query.category ?? '')) }}","$cfd369fc$byCond":"{{ state.invCondition == 'all' ? $266edf45$byCat : filterBy($266edf45$byCat, 'condition', state.invCondition) }}","$a04de202$catName":"{{ (route.query.category ?? '') == '' ? '' : (get(findBy(state.categories, 'id', (route.query.category ?? '')), 'name', '') ?? '') }}","$f19e640e$loading":"{{ !fx.inventory.loaded && count(state.inventory) == 0 }}","$ac27dca1$promoCount":"{{ get(findBy(state.promotions, 'id', (route.query.promotion ?? '')), 'inventoryCount', 0) ?? 0 }}","$fe22776a$promoDesc":"{{ get(findBy(state.promotions, 'id', (route.query.promotion ?? '')), 'description', '') ?? '' }}","$21c499e2$promoEnds":"{{ get(findBy(state.promotions, 'id', (route.query.promotion ?? '')), 'ends', '') ?? '' }}","$cb385c89$promoImg":"{{ get(findBy(promoSets, 'promoId', (route.query.promotion ?? '')), 'imgSrc', '') ?? '' }}","$b5f034f9$promoImgMobile":"{{ get(findBy(promoSets, 'promoId', (route.query.promotion ?? '')), 'imgMobileSrcset', '') ?? '' }}","$eaf1c826$promoName":"{{ (route.query.promotion ?? '') == '' ? '' : (get(findBy(state.promotions, 'id', (route.query.promotion ?? '')), 'name', '') ?? (get(findBy(promoSets, 'promoId', (route.query.promotion ?? '')), 'promotion.name', '') ?? '')) }}","$45bdb4eb$promoSrcset":"{{ get(findBy(promoSets, 'promoId', (route.query.promotion ?? '')), 'imgSrcset', '') ?? '' }}","$c0919d8e$query":"{{ trim(state.invQuery) }}","$ac3be46c$filtered":"{{ (route.query.category ?? '') != '' || state.invCondition != 'all' || $c0919d8e$query != '' }}","$bb90e4d7$searched":"{{ $c0919d8e$query == '' ? $cfd369fc$byCond : searchBy($cfd369fc$byCond, 'name', $c0919d8e$query) }}","$476d6689$sorted":"{{ state.invSort == 'priceLow' ? sortBy($bb90e4d7$searched, 'price') : (state.invSort == 'priceHigh' ? sortBy($bb90e4d7$searched, 'price', 'desc') : sortBy($bb90e4d7$searched, 'createdAt', 'desc')) }}","$fea3d570$shown":"{{ count($476d6689$sorted) }}","$4d90eda5$href":"{{ '/inventory/' + row.id }}","$4c4ea828$img":"{{ get(row, 'mediaFile.urls.card', '') ?? '' }}","$b725ab29$promoName":"{{ count(row.promotionIds) > 0 ? (get(findBy(state.promotions, 'id', first(row.promotionIds)), 'name', '') ?? '') : '' }}","$62bb71b0$showCash":"{{ (row.finance != null) && (row.cashPrice ?? 0) > 0 && (row.cashPrice ?? 0) < row.price }}","$86d9dbdf$missing":"{{ fx.inventory.loaded && findBy(invRows, 'id', route.params.id) == null }}","$cabe0061$addOnList":"{{ (findBy(invRows, 'id', route.params.id)).addOns ?? [] }}","$67caf199$addOnTotal":"{{ state.addOnPick.inventoryId == (findBy(invRows, 'id', route.params.id)).id ? pickedTotal : 0 }}","$f5a43fe2$adjList":"{{ (findBy(invRows, 'id', route.params.id)).adjustments ?? [] }}","$f1e68f28$catName":"{{ get(findBy(state.categories, 'id', (findBy(invRows, 'id', route.params.id)).wholegood.categoryId), 'name', '') ?? '' }}","$8f776bc1$inCart":"{{ findBy(state.cart, 'id', (findBy(invRows, 'id', route.params.id)).id) != null }}","$c50d6868$mainImg":"{{ get((findBy(invRows, 'id', route.params.id)), 'mediaFile.urls.page', '') ?? '' }}","$f1c1e581$activeImg":"{{ startsWith((state.$inst.ProductDetail__u0['_'].active ?? state.$default.ProductDetail__u0.active), (findBy(invRows, 'id', route.params.id)).id + '|') ? slice((state.$inst.ProductDetail__u0['_'].active ?? state.$default.ProductDetail__u0.active), length((findBy(invRows, 'id', route.params.id)).id) + 1) : $c50d6868$mainImg }}","$3fd7463d$mainThumb":"{{ get((findBy(invRows, 'id', route.params.id)), 'mediaFile.urls.card', '') ?? '' }}","$e7a4f01e$mediaList":"{{ (findBy(invRows, 'id', route.params.id)).media ?? [] }}","$c8d4384c$moreLike":"{{ take(nth(partition(filterBy(availableRows, 'categoryId', (findBy(invRows, 'id', route.params.id)).wholegood.categoryId), 'id', (findBy(invRows, 'id', route.params.id)).id), 1) ?? [], 4) }}","$36b1e3e5$pickIds":"{{ state.addOnPick.inventoryId == (findBy(invRows, 'id', route.params.id)).id ? state.addOnPick.ids : [] }}","$aa7eee53$promoIds":"{{ (findBy(invRows, 'id', route.params.id)).promotionIds ?? [] }}","$0dba007c$sold":"{{ (findBy(invRows, 'id', route.params.id)).status == 'sold' }}","$4d23290f$wgRow":"{{ findBy(state.wholegoods, 'id', (findBy(invRows, 'id', route.params.id)).wholegood.id) }}","$eb2c9783$features":"{{ get($4d23290f$wgRow, 'features', []) ?? [] }}","$1841b2b5$resources":"{{ get($4d23290f$wgRow, 'resources', []) ?? [] }}","$72deba9a$specGroups":"{{ groupRows(get($4d23290f$wgRow, 'specs', []) ?? [], 'group') }}","$a12bcf1c$subtitle":"{{ get($4d23290f$wgRow, 'subtitle', '') ?? ((findBy(invRows, 'id', route.params.id)).wholegood.subtitle ?? '') }}","$1ad1f1a3$showCash":"{{ ((findBy(invRows, 'id', route.params.id)).finance != null) && ((findBy(invRows, 'id', route.params.id)).cashPrice ?? 0) > 0 && ((findBy(invRows, 'id', route.params.id)).cashPrice ?? 0) < ((findBy(invRows, 'id', route.params.id)).price) }}"},"order":["cartIds","cartSelections","cartSubtotal","coBusy","coContactErr","coNameErr","coProblem","coReady","copyrightYear","ctEmailErr","ctMsgErr","ctNameErr","ctProblem","dealerRow","brandAccent","brandBg","brandMain","dealerLogoUrl","dealerName","invCat","invBrand","invRows","availableRows","catUnits","catCounts","catFlags","catOwnThumb","catFirstUnit","catUnitThumb","location","locAddress","locCity","locEmail","locPhone","locState","locZip","locCityLine","locFull","directionsUrl","mediaSets","pickRow","pickAddOns","pickFlags","pickPriced","pickedAddOns","pickedTotal","setPromo","setDesktop","setMobile","setFirst","setPick","setPickMobile","setImg","setImgMobile","setImgSrc","promoSets","stockedCategories","telHref"]},"constants":{"conditionFilters":[{"id":"all","label":"All"},{"id":"new","label":"New"},{"id":"used","label":"Used"}],"conditionLabels":{"demo":"Demo","new":"New","rental":"Rental","used":"Used"},"contactTopicLabels":{"other":"Something else","parts":"Parts","pickup":"Pickup order","sales":"Equipment question","service":"Service & repair"},"contactTopics":[{"id":"sales","label":"Equipment question"},{"id":"service","label":"Service & repair"},{"id":"parts","label":"Parts"},{"id":"pickup","label":"Pickup order"},{"id":"other","label":"Something else"}],"heroImage":"asset://media/v2/public/generated/a203aee998f071f0e8ad827fba396dc16405ab0d9468a9bc54e23de8f554e8e4.png","navItems":[{"exact":true,"href":"/","id":"home","label":"Home"},{"exact":false,"href":"/inventory","id":"inventory","label":"Inventory"},{"exact":false,"href":"/contact","id":"contact","label":"Contact"}],"resourceLabels":{"product-page":"Manufacturer product page","sell-sheet":"Sell sheet","warranty-statement":"Warranty statement"},"skeletonSlots":[1,2,3,4,5,6],"storefrontImage":"asset://media/v2/public/generated/a4eee5a93acff856882ff95ef50f9ade112caddc5e9065331df697a79d9860b0.png"},"limits":{"media":{"accept":[],"maxBytes":26214400,"capacityBytes":null}},"idleFx":{"categories":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null},"contact":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null},"dealer":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null},"inventory":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null},"leads":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null},"promotions":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null},"websiteContent":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null},"wholegoods":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null},"media":{"status":"idle","busy":false,"pending":false,"ok":false,"effect":null,"occurrence":null,"result":null,"problem":null}}},"capabilities":{"rows":[{"entry":{"capability":{"name":"firstLight","kind":"first-light.builder"},"target":"server","packContractAddress":"9578004954889d2b","outputNames":{},"dependencies":[],"associatedAssets":[]},"declaration":{"name":"firstLight","kind":"first-light.builder","target":null,"config":{},"secrets":{},"using":{},"as":{}},"contract":{"desc":"Grants First Light's builder (the app's hosting actor) the authority to author this app's manifest. Every edit lands as an attributed, undoable version on the app's own journal; the app's lifecycle never runs where it is edited. Remove this capability to detach the app from the builder.","product":{"label":"Build with AI","summary":"Describe what you want to create or change, and First Light will build and refine your app with you.","category":"automation","useCases":[{"id":"build-with-ai","label":"Build with AI"}]},"target":"server"},"configFields":[],"publicConfigQuestions":[],"secretInputs":[],"sourceBindingPlan":[],"assetSources":{},"hostRequirements":{"server":{"appId":false,"mounts":[],"inputs":[]},"browser":{"appId":false,"mounts":[],"inputs":[]},"both":{"appId":false,"mounts":[],"inputs":[]}}},{"entry":{"capability":{"name":"formEmail","kind":"app.form-email.web"},"target":"both","packContractAddress":"70f7f6501a34b536","outputNames":{"data":["formEmail"]},"dependencies":[],"associatedAssets":[]},"declaration":{"name":"formEmail","kind":"app.form-email.web","target":null,"config":{},"secrets":{},"using":{},"as":{}},"contract":{"desc":"Email from an app. Each create durably queues one message; success means queued, not provider delivery. Contact, quote and lead forms email the app owner with the visitor's email as Reply-To. Staff or an explicitly granted server automation may queue customer updates with to and subject. Keep workflow stages in App data; this source exposes no message list or delivery status.","product":{"label":"Form email","summary":"Email form submissions to the app's owner, or send updates to a customer's address, without storing them.","category":"business","useCases":[{"id":"email-form-submissions","label":"Email form submissions to me"},{"id":"email-customer-updates","label":"Email customers when their record changes"}]},"target":"both","targetPolicy":"fixed","host":{"appId":true,"mounts":{"capabilityData":{"desc":"the app host's capability-data door; the browser reads and writes through `<mount>/<appId>/<source>` and the host holds the credentials"}}},"outputs":{"data":{"default":"formEmail","source":{"desc":"Each create durably queues one email: to the app's owner, or to the to address an authorized verified sender or server automation gives. Nothing can be read back; a successful create confirms queuing, not delivery.","maxRows":1,"collections":{"messages":{"desc":"One message per create. Without to it goes to the app owner's account address; name the visitor's address field email so Reply answers them. With to (one address, such as a customer's saved email), optional subject supplies the subject and replies reach the owner. Every other field is listed in the email. Grant create to staff or an explicit server-automation actor; a signed-out visitor cannot set to. A recipient who stopped this app's emails is refused. Grant read to the same actors as create; there is nothing to read. Success confirms that the message was queued, not delivered: describe a resulting app stage as Quote queued rather than Quote sent. Recovering one accepted command reuses its original receipt, but a later schedule firing is a separate command; persist per-record workflow progress before repeating work.","ops":["create"],"inputs":{"create":["*"]},"enforcedBy":{"create":"the host data proxy and the app's write rules; then Control owes one email per command key, refuses `to` from a signed-out sender or a stopped recipient, and caps `to` mail per app per hour"}}}},"binding":{"sharing":"shareable","authorityIdentity":true},"desc":"Data sources \"formEmail\"."}}},"configFields":[],"publicConfigQuestions":[],"secretInputs":[],"sourceBindingPlan":[{"logicalName":"formEmail","providerName":"formEmail","definition":{"schema":"singularity.source-definition.v1","id":"source:0e1d5d96e35ed4c0","descriptor":{"schema":"singularity.source-definition.v1","namespace":"app.form-email.web","version":"1.0.0","name":"formEmail","contract":{"desc":"Each create durably queues one email: to the app's owner, or to the to address an authorized verified sender or server automation gives. Nothing can be read back; a successful create confirms queuing, not delivery.","maxRows":1,"collections":{"messages":{"desc":"One message per create. Without to it goes to the app owner's account address; name the visitor's address field email so Reply answers them. With to (one address, such as a customer's saved email), optional subject supplies the subject and replies reach the owner. Every other field is listed in the email. Grant create to staff or an explicit server-automation actor; a signed-out visitor cannot set to. A recipient who stopped this app's emails is refused. Grant read to the same actors as create; there is nothing to read. Success confirms that the message was queued, not delivered: describe a resulting app stage as Quote queued rather than Quote sent. Recovering one accepted command reuses its original receipt, but a later schedule firing is a separate command; persist per-record workflow progress before repeating work.","ops":["create"],"inputs":{"create":["*"]},"enforcedBy":{"create":"the host data proxy and the app's write rules; then Control owes one email per command key, refuses `to` from a signed-out sender or a stopped recipient, and caps `to` mail per app per hour"},"read":"reviewed"}}},"result":{"kind":"rows","maxRows":1,"maxBytes":4194304,"classification":"private"},"stream":{"semantics":"none","recovery":"none"},"authority":{"mode":"lease"},"id":"source:0e1d5d96e35ed4c0"},"contract":{"desc":"Each create durably queues one email: to the app's owner, or to the to address an authorized verified sender or server automation gives. Nothing can be read back; a successful create confirms queuing, not delivery.","maxRows":1,"collections":{"messages":{"desc":"One message per create. Without to it goes to the app owner's account address; name the visitor's address field email so Reply answers them. With to (one address, such as a customer's saved email), optional subject supplies the subject and replies reach the owner. Every other field is listed in the email. Grant create to staff or an explicit server-automation actor; a signed-out visitor cannot set to. A recipient who stopped this app's emails is refused. Grant read to the same actors as create; there is nothing to read. Success confirms that the message was queued, not delivered: describe a resulting app stage as Quote queued rather than Quote sent. Recovering one accepted command reuses its original receipt, but a later schedule firing is a separate command; persist per-record workflow progress before repeating work.","ops":["create"],"inputs":{"create":["*"]},"enforcedBy":{"create":"the host data proxy and the app's write rules; then Control owes one email per command key, refuses `to` from a signed-out sender or a stopped recipient, and caps `to` mail per app per hour"},"read":"reviewed"}}},"result":{"kind":"rows","maxRows":1,"maxBytes":4194304,"classification":"private"},"stream":{"semantics":"none","recovery":"none"},"authority":{"mode":"lease"}},"sharing":"shareable","requires":{"authority":true,"authorityIdentity":true,"resourceIdentity":true}}],"assetSources":{},"hostRequirements":{"server":{"appId":true,"mounts":[],"inputs":[]},"browser":{"appId":true,"mounts":[{"name":"capabilityData","desc":"the app host's capability-data door; the browser reads and writes through `<mount>/<appId>/<source>` and the host holds the credentials"}],"inputs":[]},"both":{"appId":true,"mounts":[],"inputs":[]}}},{"entry":{"capability":{"name":"media","kind":"cloudflare.r2.tenant-media.web"},"target":"browser","packContractAddress":"af3846bc2065263a","outputNames":{"assets":["tenantMedia"]},"dependencies":[],"associatedAssets":[{"name":"media","bucket":"media","source":"tenantMedia","access":{"read":[{"actors":["visitor"]}],"upload":[{"actors":["administrator"]}],"remove":[{"actors":["administrator"]}],"uploadUrl":[{"actors":["administrator"]}]},"scopes":{},"accept":[],"maxBytes":null,"params":{"lane":"public"},"notify":{"ok":null,"problem":"auto"},"reconciles":null}]},"declaration":{"name":"media","kind":"cloudflare.r2.tenant-media.web","target":null,"config":{},"secrets":{},"using":{},"as":{}},"contract":{"product":{"label":"Images and files","summary":"Upload reusable media and keep it securely with the app.","category":"content","useCases":[{"id":"add-media-experience","label":"Add images or file uploads"}]},"desc":"Cloudflare R2 tenant-media store reached through the app host. Content-addressed uploads, access enforcement, progress, and canonical URLs are provider-owned; field removal only detaches the reference.","target":"browser","host":{"appId":true,"mounts":{"media":{"desc":"the asset port's sign, blob and object addresses — every media URL this app renders is composed under it"}}},"config":{},"using":{"identity":{"required":false,"desc":"The app's auth capability. Required when a selected media binding carries a row-scoped grant (each subject reading and uploading only their own objects); optional otherwise."}},"outputs":{"assets":{"default":"tenantMedia","asset":{"desc":"Every asset:// reference requires an assets binding for its bucket and a registered source, including existing uploaded or generated images. A display helper does not supply that binding or grant access. Cloudflare R2 tenant media behind the app host. Uploads are content-addressed and report progress. `params.lane` addresses the physical object namespace and grants nothing; the binding's `access` actor grants decide who may read, upload, and remove.","maxBytes":26214400,"operations":["upload","uploadUrl","remove"],"params":{"lane":{"type":"string","desc":"Storage lane addressing this bucket's objects: `public` (edge-cacheable, immutable content address), `private` (never shared-cached), or `users` (each subject's own key prefix — required by, and only by, a grant clause naming a relation scope).","required":true,"enum":["public","private","users"]}},"identity":{"using":"identity"},"scope":{"principalField":"uid"}},"desc":"AssetPort consumed by manifest `assets` bindings whose source is tenantMedia."}}},"configFields":[],"publicConfigQuestions":[],"secretInputs":[],"sourceBindingPlan":[],"assetSources":{"tenantMedia":{"desc":"Every asset:// reference requires an assets binding for its bucket and a registered source, including existing uploaded or generated images. A display helper does not supply that binding or grant access. Cloudflare R2 tenant media behind the app host. Uploads are content-addressed and report progress. `params.lane` addresses the physical object namespace and grants nothing; the binding's `access` actor grants decide who may read, upload, and remove.","maxBytes":26214400,"operations":["upload","uploadUrl","remove"],"params":{"lane":{"type":"string","desc":"Storage lane addressing this bucket's objects: `public` (edge-cacheable, immutable content address), `private` (never shared-cached), or `users` (each subject's own key prefix — required by, and only by, a grant clause naming a relation scope).","required":true,"enum":["public","private","users"]}},"identity":{"using":"identity"},"scope":{"principalField":"uid"}}},"hostRequirements":{"server":{"appId":true,"mounts":[],"inputs":[]},"browser":{"appId":true,"mounts":[{"name":"media","desc":"the asset port's sign, blob and object addresses — every media URL this app renders is composed under it"}],"inputs":[]},"both":{"appId":true,"mounts":[],"inputs":[]}}},{"entry":{"capability":{"name":"opehub","kind":"opehub.rest"},"target":"both","packContractAddress":"64bd840734fb9e65","outputNames":{"data":["opehub","opehubLeads"]},"dependencies":[],"associatedAssets":[]},"declaration":{"name":"opehub","kind":"opehub.rest","target":null,"config":{},"secrets":{},"using":{},"as":{"data":["opehub","opehubLeads"]}},"contract":{"desc":"Dealer data and website lead submission, over one dealer key. Use websiteContent for media sets with hero and feature artwork, one optional promotion and inventoryIds. Read inventory separately for listings, prices, financing and all applicable promotionIds; promotions includes offers without media sets. Dealer and catalogs provide identity and product detail. The opehubLeads source creates customer inquiries. The API key stays server-side.","product":{"category":"business","label":"OpeHub dealer data","summary":"Show current OpeHub website artwork, inventory and offers, with your dealer identity and product catalog, and send customer inquiries to your dealership.","useCases":[{"id":"show-opehub-wholegoods","label":"Show equipment, inventory, and promotions"},{"id":"show-opehub-dealer-profile","label":"Show your dealer profile"},{"id":"submit-opehub-inquiry","label":"Collect inventory inquiries"}]},"verification":{"scope":"dealer profile access","failureFields":["secret:apiKey"],"facts":{"profile":{"label":"Dealer profile","values":{"published":{"label":"Published","message":"OpeHub accepted this key and is publishing a dealer profile for it.","readiness":"ready"},"unpublished":{"label":"Not published yet","message":"OpeHub accepted this key, but is not publishing a dealer profile for it yet. Catalogs will still load; a profile section will render empty until OpeHub publishes one.","readiness":"attention"}}}}},"target":"both","host":{"appId":true,"mounts":{"capabilityData":{"desc":"the app host's capability-data door; the browser reads and writes through `<mount>/<appId>/<source>` and the host holds the credentials"}}},"secrets":{"apiKey":{"label":"OpeHub API key","desc":"An OpeHub API key scoped to one dealer. Dealer reads accept any valid key; website lead creates require a First Light managed read key or an admin key. The key stays encrypted on the app's server and never reaches a page.","required":true,"sources":["platform"],"defaultSource":"platform"}},"imageEgress":["https://res.cloudinary.com"],"outputs":{"data":{"many":true,"default":"opehub","sources":{"opehub":{"desc":"Dealer-scoped reads. Use websiteContent for media sets with artwork and their promotion; inventory for listings and financing; promotions for all listing offers; dealer for identity and locations; catalog collections for products. Dates are ISO-8601. Every image carries ready links in urls, sized for its use.","maximumFreshnessMs":60000,"maxRows":100000,"collections":{"brands":{"desc":"Brands referenced by the dealer's approved catalogs, in weight order.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"darkLogo":{"desc":"The logo drawn for dark backgrounds.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"id":{"desc":"Stable brand id; catalogs reference it as brandId.","type":"string"},"logo":{"desc":"A logo, with ready links trimmed of empty margins so every logo shows whole at a comparable size.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Brand name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"catalogs":{"desc":"Catalogs this dealer holds an APPROVED catalogConfig for. Pending and denied configs are absent, so what a page renders is what the dealer is actually entitled to show.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"id":{"desc":"Stable catalog id. Categories reference it as catalogId.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Catalog name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"categories":{"desc":"Categories in approved catalogs; catalogId joins catalogs.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"id":{"desc":"Stable category id. Sub-categories reference it as categoryId.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Category name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"dealer":{"desc":"One profile row, or none if unpublished. The dealer has one name and logo; locations supply contact and availability facts.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"branding":{"desc":"Dealer branding: story, captioned photos, hex colors and named visual style. Each part may be absent.","members":{"aboutUs":"string?","colors":{"members":{"accent":"string?","background":"string?","main":"string?"},"optional":true,"type":"object"},"photos":{"items":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object"},"optional":true,"type":"array"},"vibe":{"members":{"description":"string","id":"string","name":"string"},"optional":true,"type":"object"}},"optional":true,"type":"object"},"id":{"desc":"Stable dealer id — the `publicDealers` document id.","type":"string"},"locations":{"desc":"The dealer's physical locations, each with its own address and optional phone, email and map point.","items":{"members":{"address":"string","city":"string","country":"string","email":"string?","id":"string","latLng":{"members":{"lat":"number","lng":"number"},"optional":true,"type":"object"},"phone":"string?","state":"string","zip":"string"},"type":"object"},"type":"array"},"logo":{"desc":"A logo, with ready links trimmed of empty margins so every logo shows whole at a comparable size.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Dealer name, as OpeHub publishes it.","type":"string"},"website":{"desc":"The dealer's own website. Absent when they have not set one.","optional":true,"type":"string"}}},"inventory":{"desc":"Priced published available and sold listings, newest first. Unpriced or stale listings are omitted; promotion optionally selects listings carrying that offer.","ops":["query"],"queryFields":[],"params":["promotion"],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"addOns":{"desc":"Customer-selectable extras, separately priced and not included in the machine price. Show their payment estimates separately. Send chosen ids with their inventory id in a website lead’s addOnSelections.","items":{"members":{"adjustments":{"items":{"members":{"amount":"number","name":"string","promotionId":"string?"},"type":"object"},"type":"array"},"cashPrice":{"desc":"Lower cash price only when financing creates a cash saving; otherwise null.","optional":true,"type":"number"},"id":"string","mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":"string","payment":{"desc":"Separate monthly estimate before sales tax, without an additional finance fee. The final quote reprices selected options.","optional":true,"type":"number"},"price":"number?","qty":"number","sku":"string"},"type":"object"},"type":"array"},"adjustments":{"desc":"Already included in machine prices: never add again. Negative amounts reduce price; promotionId joins a catalog offer when present.","items":{"members":{"amount":"number","name":"string","promotionId":"string?"},"type":"object"},"type":"array"},"cashPrice":{"desc":"Lower cash dollars before tax only when financing creates a cash saving; otherwise null. Show price alone when null.","optional":true,"type":"number"},"condition":{"desc":"The unit's sale condition.","enum":["new","used","demo","rental"],"type":"string"},"createdAt":{"desc":"ISO-8601 listing creation time.","type":"string"},"description":{"desc":"The dealer-authored listing description; empty when none was provided.","type":"string"},"finance":{"desc":"Machine-only monthly estimate before sales tax with one finance fee; its rate is the interest rate in percent. Put its disclosure link beside the amount.","members":{"applyUrl":"string?","apr":"number","disclosure":"string","name":"string","payment":"number","termMonths":"number"},"optional":true,"type":"object"},"hours":{"desc":"Meter reading, when tracked.","optional":true,"type":"number"},"id":{"desc":"Stable inventory listing id.","type":"string"},"locationId":{"desc":"The physical lot; stock is not implied at other dealer locations.","type":"string"},"media":{"desc":"Additional listing photos or videos, in the dealer's authored order.","items":{"members":{"description":"string?","mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object"},"name":"string?"},"type":"object"},"type":"array"},"mediaFile":{"desc":"The listing hero image: the unit's own photo when set, otherwise its configured catalog image.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"The listing title.","type":"string"},"price":{"desc":"Required current machine dollars before tax, including its adjustments. Unpriced or stale listings are omitted.","type":"number"},"promotionIds":{"desc":"Current catalog offers carried by this listing; joins promotions.id.","items":"string","type":"array"},"status":{"desc":"The published listing state. Sold listings remain visible so a site can badge them.","enum":["available","sold"],"type":"string"},"stockNumber":{"desc":"The dealer's own stock tag, when set.","optional":true,"type":"string"},"updatedAt":{"desc":"ISO-8601 listing update time.","type":"string"},"wholegood":{"desc":"id joins wholegoods for current catalog specs, features and resources.","members":{"brandId":"string","catalogId":"string","categoryId":"string","id":"string","name":"string","sku":"string","subCategoryId":"string","subtitle":"string?"},"type":"object"}}},"promotions":{"desc":"Catalog promotions carried by published listings, descending weight.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"description":{"desc":"Customer-facing promotion description; empty when none was provided.","type":"string"},"discount":{"desc":"Dollars off per unit; 0 for textOnly.","type":"number"},"ends":{"desc":"ISO-8601 promotion end time.","type":"string"},"id":{"desc":"Stable catalog promotion id; joins inventory.promotionIds.","type":"string"},"inventoryCount":{"desc":"Published listings carrying this promotion. Always at least one.","type":"number"},"name":{"desc":"Promotion name, as OpeHub publishes it.","type":"string"},"starts":{"desc":"ISO-8601 promotion start time.","type":"string"},"type":{"desc":"Whether the promotion discounts each unit or exists purely as an offer message.","enum":["dollarsOff","textOnly"],"type":"string"},"weight":{"desc":"Offer display priority, highest first.","type":"number"}}},"subCategories":{"desc":"Sub-categories in approved catalogs; categoryId joins categories.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"categoryId":{"desc":"The owning category's id.","type":"string"},"id":{"desc":"Stable sub-category id.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Sub-category name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"websiteContent":{"desc":"One snapshot of website media sets: hero images, supporting features, an optional promotion and eligible inventory ids. Read inventory separately for listing facts.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"builtAt":{"desc":"Snapshot time, ISO-8601.","type":"string"},"mediaSets":{"desc":"Website media sets with hero images, supporting features, an optional promotion and eligible listing ids. The builder owns layout.","items":{"members":{"features":{"desc":"Supporting website artwork in authored order.","items":{"members":{"alt":"string","description":"string?","file":{"desc":"Supporting artwork, usually near square, with ready links that show it whole.","members":{"cloudinaryId":"string","cloudinaryVersion":"number?","format":"string","height":"number?","type":"string","urls":{"desc":"urls.card fits 640x640; urls.page fits 1200x1200.","members":{"card":"string","page":"string"},"optional":true,"type":"object"},"width":"number?"},"type":"object"},"headline":"string?","id":"string","role":{"enum":["default","desktop","mobile"],"type":"string"}},"type":"object"},"type":"array"},"hero":{"desc":"Hero images in authored order; role identifies a desktop or mobile rendition when its delivered dimensions match.","items":{"members":{"alt":"string","description":"string?","file":{"desc":"Hero artwork, with ready links at three widths that keep its shape.","members":{"cloudinaryId":"string","cloudinaryVersion":"number?","format":"string","height":"number?","type":"string","urls":{"desc":"urls.phone is 640 wide, urls.tablet 1024, urls.desktop 1920 (never enlarged); give all three as an img srcset with 640w, 1024w and 1920w.","members":{"desktop":"string","phone":"string","tablet":"string"},"optional":true,"type":"object"},"width":"number?"},"type":"object"},"headline":"string?","id":"string","role":{"enum":["default","desktop","mobile"],"type":"string"}},"type":"object"},"type":"array"},"id":"string","inventoryIds":{"desc":"Current available, priced listings in this media set; joins inventory.id. Read inventory for prices, financing and all applicable promotionIds.","items":"string","type":"array"},"promotion":{"members":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"description":{"desc":"Customer-facing promotion description; empty when none was provided.","type":"string"},"discount":{"desc":"Dollars off per unit; 0 for textOnly.","type":"number"},"ends":{"desc":"ISO-8601 promotion end time.","type":"string"},"id":{"desc":"Stable catalog promotion id; joins inventory.promotionIds.","type":"string"},"inventoryCount":{"desc":"Published listings carrying this promotion. Always at least one.","type":"number"},"name":{"desc":"Promotion name, as OpeHub publishes it.","type":"string"},"starts":{"desc":"ISO-8601 promotion start time.","type":"string"},"type":{"desc":"Whether the promotion discounts each unit or exists purely as an offer message.","enum":["dollarsOff","textOnly"],"type":"string"},"weight":{"desc":"Offer display priority, highest first.","type":"number"}},"type":"object","desc":"The single promotion this set advertises, when it qualifies through a promotion.","optional":true}},"type":"object"},"type":"array"},"revision":{"desc":"Snapshot id.","type":"string"},"validUntil":{"desc":"Refetch deadline, ISO-8601.","type":"string"}}},"wholegoods":{"desc":"Active sellable products.","ops":["query"],"queryFields":[],"params":["catalog"],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"attachment":{"desc":"Whether this row is an attachment/accessory rather than a parent machine.","type":"boolean"},"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"categoryId":{"desc":"The owning category's id.","type":"string"},"emissionCode":{"desc":"Emissions-market code used by the dealer's catalog eligibility flags.","optional":true,"type":"string"},"features":{"desc":"Merchandising features, each with text and an optional Cloudinary asset.","items":{"members":{"description":"string","mediaFile":{"desc":"A product feature image, usually near square, with ready links that show it whole.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.card fits 640x640; urls.page fits 1200x1200.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":"string"},"type":"object"},"type":"array"},"fitsWholegoodIds":{"desc":"Parent wholegood ids this attachment fits; empty for a row with no declared parents.","items":"string","type":"array"},"id":{"desc":"Stable wholegood id.","type":"string"},"mediaFile":{"desc":"The product image.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Wholegood name, as OpeHub publishes it.","type":"string"},"pricing":{"desc":"Dollars at the assigned catalog price level. Missing means unavailable, not zero; dealer cost is never served.","members":{"price":"number?"},"type":"object"},"resources":{"desc":"Reviewed external collateral links: product pages, warranty statements and sell sheets.","items":{"members":{"type":{"enum":["product-page","warranty-statement","sell-sheet"],"type":"string"},"url":"string"},"type":"object"},"type":"array"},"sku":{"desc":"The manufacturer's model or stock-keeping identifier.","type":"string"},"specs":{"desc":"Resolved specifications in definition weight order. `value` is the comparable scalar; `display` carries ready-to-render imperial and metric strings.","items":{"members":{"display":{"members":{"imperial":"string","metric":"string"},"type":"object"},"group":"string","id":"string","kind":{"enum":["quantity","trait","text"],"type":"string"},"label":"string?","name":"string","unit":"string?","value":{"type":"union","variants":["number","boolean","string"]}},"type":"object"},"type":"array"},"subCategoryId":{"desc":"The owning sub-category's id.","type":"string"},"subtitle":{"desc":"The product subtitle.","optional":true,"type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}}}},"opehubLeads":{"desc":"Dealer-scoped website lead submission. Requires a First Light managed read key or an admin key. No reads are exposed.","maxRows":1,"collections":{"websiteLeads":{"desc":"Submit a customer inquiry for one or more inventory listings. The host keeps it and answers at once, then delivers it to OpeHub under one submission id, retrying for up to an hour until OpeHub takes it.","ops":["create"],"inputs":{"create":["addOnSelections","contact","customerName","inventoryIds"]},"create":["contact","customerName","inventoryIds"],"anonymous":["create"],"enforcedBy":{"create":"the host data proxy and the app's write rules, then the provider under the app's configured credentials"},"fields":{"id":{"type":"string","desc":"The local row id of this write; the provider never sees it."},"addOnSelections":{"desc":"Optional customer choices: each inventoryId must occur in inventoryIds once, with one to fifty distinct addOnIds from that listing. Omit when none are selected.","items":{"members":{"addOnIds":{"items":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"maxItems":50,"minItems":1,"type":"array","unique":true},"inventoryId":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"type":"object"},"maxItems":20,"optional":true,"type":"array","unique":"inventoryId"},"contact":{"desc":"At least one of email or phone is required.","type":"union","variants":[{"members":{"email":{"maxLength":254,"pattern":"^[A-Za-z0-9_+\\-]+(?:\\.[A-Za-z0-9_+\\-]+)*@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)+$","type":"string"},"phone":{"maxLength":32,"pattern":"^\\+?[ ().-]*(?:\\d[ ().-]*){7,}$","type":"string","optional":true}},"type":"object"},{"members":{"email":{"maxLength":254,"pattern":"^[A-Za-z0-9_+\\-]+(?:\\.[A-Za-z0-9_+\\-]+)*@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)+$","type":"string","optional":true},"phone":{"maxLength":32,"pattern":"^\\+?[ ().-]*(?:\\d[ ().-]*){7,}$","type":"string"}},"type":"object"}]},"customerName":{"pattern":"^[^\\u0000-\\u001f\\u007f]*$","type":"string","desc":"Customer name, 1–120 characters.","maxLength":120,"minLength":1},"inventoryIds":{"desc":"One to twenty distinct inventory listing ids.","items":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"maxItems":20,"minItems":1,"type":"array","unique":true}}}}}},"binding":{"sharing":"shareable"},"desc":"Data sources \"opehub\", \"opehubLeads\"; select several with as: { data: [\"opehub\", \"opehubLeads\"] }. The host holds the credentials."}}},"configFields":[],"publicConfigQuestions":[],"secretInputs":[{"input":"apiKey","contractRef":{"from":"platform","optional":false},"manifestRef":{"from":"platform","optional":false}}],"sourceBindingPlan":[{"logicalName":"opehub","providerName":"opehub","definition":{"schema":"singularity.source-definition.v1","id":"source:562a17210b9ea3a7","descriptor":{"schema":"singularity.source-definition.v1","namespace":"opehub.rest","version":"0.3.0","name":"opehub","contract":{"desc":"Dealer-scoped reads. Use websiteContent for media sets with artwork and their promotion; inventory for listings and financing; promotions for all listing offers; dealer for identity and locations; catalog collections for products. Dates are ISO-8601. Every image carries ready links in urls, sized for its use.","maximumFreshnessMs":60000,"maxRows":100000,"collections":{"brands":{"desc":"Brands referenced by the dealer's approved catalogs, in weight order.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"darkLogo":{"desc":"The logo drawn for dark backgrounds.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"id":{"desc":"Stable brand id; catalogs reference it as brandId.","type":"string"},"logo":{"desc":"A logo, with ready links trimmed of empty margins so every logo shows whole at a comparable size.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Brand name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"catalogs":{"desc":"Catalogs this dealer holds an APPROVED catalogConfig for. Pending and denied configs are absent, so what a page renders is what the dealer is actually entitled to show.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"id":{"desc":"Stable catalog id. Categories reference it as catalogId.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Catalog name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"categories":{"desc":"Categories in approved catalogs; catalogId joins catalogs.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"id":{"desc":"Stable category id. Sub-categories reference it as categoryId.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Category name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"dealer":{"desc":"One profile row, or none if unpublished. The dealer has one name and logo; locations supply contact and availability facts.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"branding":{"desc":"Dealer branding: story, captioned photos, hex colors and named visual style. Each part may be absent.","members":{"aboutUs":"string?","colors":{"members":{"accent":"string?","background":"string?","main":"string?"},"optional":true,"type":"object"},"photos":{"items":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object"},"optional":true,"type":"array"},"vibe":{"members":{"description":"string","id":"string","name":"string"},"optional":true,"type":"object"}},"optional":true,"type":"object"},"id":{"desc":"Stable dealer id — the `publicDealers` document id.","type":"string"},"locations":{"desc":"The dealer's physical locations, each with its own address and optional phone, email and map point.","items":{"members":{"address":"string","city":"string","country":"string","email":"string?","id":"string","latLng":{"members":{"lat":"number","lng":"number"},"optional":true,"type":"object"},"phone":"string?","state":"string","zip":"string"},"type":"object"},"type":"array"},"logo":{"desc":"A logo, with ready links trimmed of empty margins so every logo shows whole at a comparable size.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Dealer name, as OpeHub publishes it.","type":"string"},"website":{"desc":"The dealer's own website. Absent when they have not set one.","optional":true,"type":"string"}}},"inventory":{"desc":"Priced published available and sold listings, newest first. Unpriced or stale listings are omitted; promotion optionally selects listings carrying that offer.","ops":["query"],"queryFields":[],"params":["promotion"],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"addOns":{"desc":"Customer-selectable extras, separately priced and not included in the machine price. Show their payment estimates separately. Send chosen ids with their inventory id in a website lead’s addOnSelections.","items":{"members":{"adjustments":{"items":{"members":{"amount":"number","name":"string","promotionId":"string?"},"type":"object"},"type":"array"},"cashPrice":{"desc":"Lower cash price only when financing creates a cash saving; otherwise null.","optional":true,"type":"number"},"id":"string","mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":"string","payment":{"desc":"Separate monthly estimate before sales tax, without an additional finance fee. The final quote reprices selected options.","optional":true,"type":"number"},"price":"number?","qty":"number","sku":"string"},"type":"object"},"type":"array"},"adjustments":{"desc":"Already included in machine prices: never add again. Negative amounts reduce price; promotionId joins a catalog offer when present.","items":{"members":{"amount":"number","name":"string","promotionId":"string?"},"type":"object"},"type":"array"},"cashPrice":{"desc":"Lower cash dollars before tax only when financing creates a cash saving; otherwise null. Show price alone when null.","optional":true,"type":"number"},"condition":{"desc":"The unit's sale condition.","enum":["new","used","demo","rental"],"type":"string"},"createdAt":{"desc":"ISO-8601 listing creation time.","type":"string"},"description":{"desc":"The dealer-authored listing description; empty when none was provided.","type":"string"},"finance":{"desc":"Machine-only monthly estimate before sales tax with one finance fee; its rate is the interest rate in percent. Put its disclosure link beside the amount.","members":{"applyUrl":"string?","apr":"number","disclosure":"string","name":"string","payment":"number","termMonths":"number"},"optional":true,"type":"object"},"hours":{"desc":"Meter reading, when tracked.","optional":true,"type":"number"},"id":{"desc":"Stable inventory listing id.","type":"string"},"locationId":{"desc":"The physical lot; stock is not implied at other dealer locations.","type":"string"},"media":{"desc":"Additional listing photos or videos, in the dealer's authored order.","items":{"members":{"description":"string?","mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object"},"name":"string?"},"type":"object"},"type":"array"},"mediaFile":{"desc":"The listing hero image: the unit's own photo when set, otherwise its configured catalog image.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"The listing title.","type":"string"},"price":{"desc":"Required current machine dollars before tax, including its adjustments. Unpriced or stale listings are omitted.","type":"number"},"promotionIds":{"desc":"Current catalog offers carried by this listing; joins promotions.id.","items":"string","type":"array"},"status":{"desc":"The published listing state. Sold listings remain visible so a site can badge them.","enum":["available","sold"],"type":"string"},"stockNumber":{"desc":"The dealer's own stock tag, when set.","optional":true,"type":"string"},"updatedAt":{"desc":"ISO-8601 listing update time.","type":"string"},"wholegood":{"desc":"id joins wholegoods for current catalog specs, features and resources.","members":{"brandId":"string","catalogId":"string","categoryId":"string","id":"string","name":"string","sku":"string","subCategoryId":"string","subtitle":"string?"},"type":"object"}}},"promotions":{"desc":"Catalog promotions carried by published listings, descending weight.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"description":{"desc":"Customer-facing promotion description; empty when none was provided.","type":"string"},"discount":{"desc":"Dollars off per unit; 0 for textOnly.","type":"number"},"ends":{"desc":"ISO-8601 promotion end time.","type":"string"},"id":{"desc":"Stable catalog promotion id; joins inventory.promotionIds.","type":"string"},"inventoryCount":{"desc":"Published listings carrying this promotion. Always at least one.","type":"number"},"name":{"desc":"Promotion name, as OpeHub publishes it.","type":"string"},"starts":{"desc":"ISO-8601 promotion start time.","type":"string"},"type":{"desc":"Whether the promotion discounts each unit or exists purely as an offer message.","enum":["dollarsOff","textOnly"],"type":"string"},"weight":{"desc":"Offer display priority, highest first.","type":"number"}}},"subCategories":{"desc":"Sub-categories in approved catalogs; categoryId joins categories.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"categoryId":{"desc":"The owning category's id.","type":"string"},"id":{"desc":"Stable sub-category id.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Sub-category name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"websiteContent":{"desc":"One snapshot of website media sets: hero images, supporting features, an optional promotion and eligible inventory ids. Read inventory separately for listing facts.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"builtAt":{"desc":"Snapshot time, ISO-8601.","type":"string"},"mediaSets":{"desc":"Website media sets with hero images, supporting features, an optional promotion and eligible listing ids. The builder owns layout.","items":{"members":{"features":{"desc":"Supporting website artwork in authored order.","items":{"members":{"alt":"string","description":"string?","file":{"desc":"Supporting artwork, usually near square, with ready links that show it whole.","members":{"cloudinaryId":"string","cloudinaryVersion":"number?","format":"string","height":"number?","type":"string","urls":{"desc":"urls.card fits 640x640; urls.page fits 1200x1200.","members":{"card":"string","page":"string"},"optional":true,"type":"object"},"width":"number?"},"type":"object"},"headline":"string?","id":"string","role":{"enum":["default","desktop","mobile"],"type":"string"}},"type":"object"},"type":"array"},"hero":{"desc":"Hero images in authored order; role identifies a desktop or mobile rendition when its delivered dimensions match.","items":{"members":{"alt":"string","description":"string?","file":{"desc":"Hero artwork, with ready links at three widths that keep its shape.","members":{"cloudinaryId":"string","cloudinaryVersion":"number?","format":"string","height":"number?","type":"string","urls":{"desc":"urls.phone is 640 wide, urls.tablet 1024, urls.desktop 1920 (never enlarged); give all three as an img srcset with 640w, 1024w and 1920w.","members":{"desktop":"string","phone":"string","tablet":"string"},"optional":true,"type":"object"},"width":"number?"},"type":"object"},"headline":"string?","id":"string","role":{"enum":["default","desktop","mobile"],"type":"string"}},"type":"object"},"type":"array"},"id":"string","inventoryIds":{"desc":"Current available, priced listings in this media set; joins inventory.id. Read inventory for prices, financing and all applicable promotionIds.","items":"string","type":"array"},"promotion":{"members":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"description":{"desc":"Customer-facing promotion description; empty when none was provided.","type":"string"},"discount":{"desc":"Dollars off per unit; 0 for textOnly.","type":"number"},"ends":{"desc":"ISO-8601 promotion end time.","type":"string"},"id":{"desc":"Stable catalog promotion id; joins inventory.promotionIds.","type":"string"},"inventoryCount":{"desc":"Published listings carrying this promotion. Always at least one.","type":"number"},"name":{"desc":"Promotion name, as OpeHub publishes it.","type":"string"},"starts":{"desc":"ISO-8601 promotion start time.","type":"string"},"type":{"desc":"Whether the promotion discounts each unit or exists purely as an offer message.","enum":["dollarsOff","textOnly"],"type":"string"},"weight":{"desc":"Offer display priority, highest first.","type":"number"}},"type":"object","desc":"The single promotion this set advertises, when it qualifies through a promotion.","optional":true}},"type":"object"},"type":"array"},"revision":{"desc":"Snapshot id.","type":"string"},"validUntil":{"desc":"Refetch deadline, ISO-8601.","type":"string"}}},"wholegoods":{"desc":"Active sellable products.","ops":["query"],"queryFields":[],"params":["catalog"],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"attachment":{"desc":"Whether this row is an attachment/accessory rather than a parent machine.","type":"boolean"},"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"categoryId":{"desc":"The owning category's id.","type":"string"},"emissionCode":{"desc":"Emissions-market code used by the dealer's catalog eligibility flags.","optional":true,"type":"string"},"features":{"desc":"Merchandising features, each with text and an optional Cloudinary asset.","items":{"members":{"description":"string","mediaFile":{"desc":"A product feature image, usually near square, with ready links that show it whole.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.card fits 640x640; urls.page fits 1200x1200.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":"string"},"type":"object"},"type":"array"},"fitsWholegoodIds":{"desc":"Parent wholegood ids this attachment fits; empty for a row with no declared parents.","items":"string","type":"array"},"id":{"desc":"Stable wholegood id.","type":"string"},"mediaFile":{"desc":"The product image.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Wholegood name, as OpeHub publishes it.","type":"string"},"pricing":{"desc":"Dollars at the assigned catalog price level. Missing means unavailable, not zero; dealer cost is never served.","members":{"price":"number?"},"type":"object"},"resources":{"desc":"Reviewed external collateral links: product pages, warranty statements and sell sheets.","items":{"members":{"type":{"enum":["product-page","warranty-statement","sell-sheet"],"type":"string"},"url":"string"},"type":"object"},"type":"array"},"sku":{"desc":"The manufacturer's model or stock-keeping identifier.","type":"string"},"specs":{"desc":"Resolved specifications in definition weight order. `value` is the comparable scalar; `display` carries ready-to-render imperial and metric strings.","items":{"members":{"display":{"members":{"imperial":"string","metric":"string"},"type":"object"},"group":"string","id":"string","kind":{"enum":["quantity","trait","text"],"type":"string"},"label":"string?","name":"string","unit":"string?","value":{"type":"union","variants":["number","boolean","string"]}},"type":"object"},"type":"array"},"subCategoryId":{"desc":"The owning sub-category's id.","type":"string"},"subtitle":{"desc":"The product subtitle.","optional":true,"type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}}}},"result":{"kind":"rows","maxRows":100000,"maxBytes":4194304,"classification":"public","maximumFreshnessMs":60000},"stream":{"semantics":"none","recovery":"none"},"authority":{"mode":"public"},"id":"source:562a17210b9ea3a7"},"contract":{"desc":"Dealer-scoped reads. Use websiteContent for media sets with artwork and their promotion; inventory for listings and financing; promotions for all listing offers; dealer for identity and locations; catalog collections for products. Dates are ISO-8601. Every image carries ready links in urls, sized for its use.","maximumFreshnessMs":60000,"maxRows":100000,"collections":{"brands":{"desc":"Brands referenced by the dealer's approved catalogs, in weight order.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"darkLogo":{"desc":"The logo drawn for dark backgrounds.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"id":{"desc":"Stable brand id; catalogs reference it as brandId.","type":"string"},"logo":{"desc":"A logo, with ready links trimmed of empty margins so every logo shows whole at a comparable size.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Brand name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"catalogs":{"desc":"Catalogs this dealer holds an APPROVED catalogConfig for. Pending and denied configs are absent, so what a page renders is what the dealer is actually entitled to show.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"id":{"desc":"Stable catalog id. Categories reference it as catalogId.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Catalog name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"categories":{"desc":"Categories in approved catalogs; catalogId joins catalogs.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"id":{"desc":"Stable category id. Sub-categories reference it as categoryId.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Category name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"dealer":{"desc":"One profile row, or none if unpublished. The dealer has one name and logo; locations supply contact and availability facts.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"branding":{"desc":"Dealer branding: story, captioned photos, hex colors and named visual style. Each part may be absent.","members":{"aboutUs":"string?","colors":{"members":{"accent":"string?","background":"string?","main":"string?"},"optional":true,"type":"object"},"photos":{"items":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object"},"optional":true,"type":"array"},"vibe":{"members":{"description":"string","id":"string","name":"string"},"optional":true,"type":"object"}},"optional":true,"type":"object"},"id":{"desc":"Stable dealer id — the `publicDealers` document id.","type":"string"},"locations":{"desc":"The dealer's physical locations, each with its own address and optional phone, email and map point.","items":{"members":{"address":"string","city":"string","country":"string","email":"string?","id":"string","latLng":{"members":{"lat":"number","lng":"number"},"optional":true,"type":"object"},"phone":"string?","state":"string","zip":"string"},"type":"object"},"type":"array"},"logo":{"desc":"A logo, with ready links trimmed of empty margins so every logo shows whole at a comparable size.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.small fits 240x80 for headers, cards and footers; urls.large fits 720x240 for a large placement.","members":{"large":"string","small":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Dealer name, as OpeHub publishes it.","type":"string"},"website":{"desc":"The dealer's own website. Absent when they have not set one.","optional":true,"type":"string"}}},"inventory":{"desc":"Priced published available and sold listings, newest first. Unpriced or stale listings are omitted; promotion optionally selects listings carrying that offer.","ops":["query"],"queryFields":[],"params":["promotion"],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"addOns":{"desc":"Customer-selectable extras, separately priced and not included in the machine price. Show their payment estimates separately. Send chosen ids with their inventory id in a website lead’s addOnSelections.","items":{"members":{"adjustments":{"items":{"members":{"amount":"number","name":"string","promotionId":"string?"},"type":"object"},"type":"array"},"cashPrice":{"desc":"Lower cash price only when financing creates a cash saving; otherwise null.","optional":true,"type":"number"},"id":"string","mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":"string","payment":{"desc":"Separate monthly estimate before sales tax, without an additional finance fee. The final quote reprices selected options.","optional":true,"type":"number"},"price":"number?","qty":"number","sku":"string"},"type":"object"},"type":"array"},"adjustments":{"desc":"Already included in machine prices: never add again. Negative amounts reduce price; promotionId joins a catalog offer when present.","items":{"members":{"amount":"number","name":"string","promotionId":"string?"},"type":"object"},"type":"array"},"cashPrice":{"desc":"Lower cash dollars before tax only when financing creates a cash saving; otherwise null. Show price alone when null.","optional":true,"type":"number"},"condition":{"desc":"The unit's sale condition.","enum":["new","used","demo","rental"],"type":"string"},"createdAt":{"desc":"ISO-8601 listing creation time.","type":"string"},"description":{"desc":"The dealer-authored listing description; empty when none was provided.","type":"string"},"finance":{"desc":"Machine-only monthly estimate before sales tax with one finance fee; its rate is the interest rate in percent. Put its disclosure link beside the amount.","members":{"applyUrl":"string?","apr":"number","disclosure":"string","name":"string","payment":"number","termMonths":"number"},"optional":true,"type":"object"},"hours":{"desc":"Meter reading, when tracked.","optional":true,"type":"number"},"id":{"desc":"Stable inventory listing id.","type":"string"},"locationId":{"desc":"The physical lot; stock is not implied at other dealer locations.","type":"string"},"media":{"desc":"Additional listing photos or videos, in the dealer's authored order.","items":{"members":{"description":"string?","mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object"},"name":"string?"},"type":"object"},"type":"array"},"mediaFile":{"desc":"The listing hero image: the unit's own photo when set, otherwise its configured catalog image.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"The listing title.","type":"string"},"price":{"desc":"Required current machine dollars before tax, including its adjustments. Unpriced or stale listings are omitted.","type":"number"},"promotionIds":{"desc":"Current catalog offers carried by this listing; joins promotions.id.","items":"string","type":"array"},"status":{"desc":"The published listing state. Sold listings remain visible so a site can badge them.","enum":["available","sold"],"type":"string"},"stockNumber":{"desc":"The dealer's own stock tag, when set.","optional":true,"type":"string"},"updatedAt":{"desc":"ISO-8601 listing update time.","type":"string"},"wholegood":{"desc":"id joins wholegoods for current catalog specs, features and resources.","members":{"brandId":"string","catalogId":"string","categoryId":"string","id":"string","name":"string","sku":"string","subCategoryId":"string","subtitle":"string?"},"type":"object"}}},"promotions":{"desc":"Catalog promotions carried by published listings, descending weight.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"description":{"desc":"Customer-facing promotion description; empty when none was provided.","type":"string"},"discount":{"desc":"Dollars off per unit; 0 for textOnly.","type":"number"},"ends":{"desc":"ISO-8601 promotion end time.","type":"string"},"id":{"desc":"Stable catalog promotion id; joins inventory.promotionIds.","type":"string"},"inventoryCount":{"desc":"Published listings carrying this promotion. Always at least one.","type":"number"},"name":{"desc":"Promotion name, as OpeHub publishes it.","type":"string"},"starts":{"desc":"ISO-8601 promotion start time.","type":"string"},"type":{"desc":"Whether the promotion discounts each unit or exists purely as an offer message.","enum":["dollarsOff","textOnly"],"type":"string"},"weight":{"desc":"Offer display priority, highest first.","type":"number"}}},"subCategories":{"desc":"Sub-categories in approved catalogs; categoryId joins categories.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"categoryId":{"desc":"The owning category's id.","type":"string"},"id":{"desc":"Stable sub-category id.","type":"string"},"mediaFile":{"desc":"A product, catalog or listing photo (or video), with ready links that show it whole, never cropped or enlarged.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Sub-category name, as OpeHub publishes it.","type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}},"websiteContent":{"desc":"One snapshot of website media sets: hero images, supporting features, an optional promotion and eligible inventory ids. Read inventory separately for listing facts.","ops":["query"],"queryFields":[],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"builtAt":{"desc":"Snapshot time, ISO-8601.","type":"string"},"mediaSets":{"desc":"Website media sets with hero images, supporting features, an optional promotion and eligible listing ids. The builder owns layout.","items":{"members":{"features":{"desc":"Supporting website artwork in authored order.","items":{"members":{"alt":"string","description":"string?","file":{"desc":"Supporting artwork, usually near square, with ready links that show it whole.","members":{"cloudinaryId":"string","cloudinaryVersion":"number?","format":"string","height":"number?","type":"string","urls":{"desc":"urls.card fits 640x640; urls.page fits 1200x1200.","members":{"card":"string","page":"string"},"optional":true,"type":"object"},"width":"number?"},"type":"object"},"headline":"string?","id":"string","role":{"enum":["default","desktop","mobile"],"type":"string"}},"type":"object"},"type":"array"},"hero":{"desc":"Hero images in authored order; role identifies a desktop or mobile rendition when its delivered dimensions match.","items":{"members":{"alt":"string","description":"string?","file":{"desc":"Hero artwork, with ready links at three widths that keep its shape.","members":{"cloudinaryId":"string","cloudinaryVersion":"number?","format":"string","height":"number?","type":"string","urls":{"desc":"urls.phone is 640 wide, urls.tablet 1024, urls.desktop 1920 (never enlarged); give all three as an img srcset with 640w, 1024w and 1920w.","members":{"desktop":"string","phone":"string","tablet":"string"},"optional":true,"type":"object"},"width":"number?"},"type":"object"},"headline":"string?","id":"string","role":{"enum":["default","desktop","mobile"],"type":"string"}},"type":"object"},"type":"array"},"id":"string","inventoryIds":{"desc":"Current available, priced listings in this media set; joins inventory.id. Read inventory for prices, financing and all applicable promotionIds.","items":"string","type":"array"},"promotion":{"members":{"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"description":{"desc":"Customer-facing promotion description; empty when none was provided.","type":"string"},"discount":{"desc":"Dollars off per unit; 0 for textOnly.","type":"number"},"ends":{"desc":"ISO-8601 promotion end time.","type":"string"},"id":{"desc":"Stable catalog promotion id; joins inventory.promotionIds.","type":"string"},"inventoryCount":{"desc":"Published listings carrying this promotion. Always at least one.","type":"number"},"name":{"desc":"Promotion name, as OpeHub publishes it.","type":"string"},"starts":{"desc":"ISO-8601 promotion start time.","type":"string"},"type":{"desc":"Whether the promotion discounts each unit or exists purely as an offer message.","enum":["dollarsOff","textOnly"],"type":"string"},"weight":{"desc":"Offer display priority, highest first.","type":"number"}},"type":"object","desc":"The single promotion this set advertises, when it qualifies through a promotion.","optional":true}},"type":"object"},"type":"array"},"revision":{"desc":"Snapshot id.","type":"string"},"validUntil":{"desc":"Refetch deadline, ISO-8601.","type":"string"}}},"wholegoods":{"desc":"Active sellable products.","ops":["query"],"queryFields":[],"params":["catalog"],"read":"anonymous","anonymous":["read"],"enforcedBy":{"read":"the provider at opehub.web.app, under the app's configured credentials"},"fields":{"attachment":{"desc":"Whether this row is an attachment/accessory rather than a parent machine.","type":"boolean"},"brandId":{"desc":"Brand id; joins brands.id.","type":"string"},"catalogId":{"desc":"The owning catalog's id.","type":"string"},"categoryId":{"desc":"The owning category's id.","type":"string"},"emissionCode":{"desc":"Emissions-market code used by the dealer's catalog eligibility flags.","optional":true,"type":"string"},"features":{"desc":"Merchandising features, each with text and an optional Cloudinary asset.","items":{"members":{"description":"string","mediaFile":{"desc":"A product feature image, usually near square, with ready links that show it whole.","members":{"cloudinaryId":"string","format":"string","type":"string","urls":{"desc":"urls.card fits 640x640; urls.page fits 1200x1200.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":"string"},"type":"object"},"type":"array"},"fitsWholegoodIds":{"desc":"Parent wholegood ids this attachment fits; empty for a row with no declared parents.","items":"string","type":"array"},"id":{"desc":"Stable wholegood id.","type":"string"},"mediaFile":{"desc":"The product image.","members":{"cloudinaryId":"string","description":"string?","format":"string","type":"string","urls":{"desc":"urls.card fits 640x480 for cards and lists; urls.page fits 1600x1200 for a product page or gallery.","members":{"card":"string","page":"string"},"optional":true,"type":"object"}},"type":"object","optional":true},"name":{"desc":"Wholegood name, as OpeHub publishes it.","type":"string"},"pricing":{"desc":"Dollars at the assigned catalog price level. Missing means unavailable, not zero; dealer cost is never served.","members":{"price":"number?"},"type":"object"},"resources":{"desc":"Reviewed external collateral links: product pages, warranty statements and sell sheets.","items":{"members":{"type":{"enum":["product-page","warranty-statement","sell-sheet"],"type":"string"},"url":"string"},"type":"object"},"type":"array"},"sku":{"desc":"The manufacturer's model or stock-keeping identifier.","type":"string"},"specs":{"desc":"Resolved specifications in definition weight order. `value` is the comparable scalar; `display` carries ready-to-render imperial and metric strings.","items":{"members":{"display":{"members":{"imperial":"string","metric":"string"},"type":"object"},"group":"string","id":"string","kind":{"enum":["quantity","trait","text"],"type":"string"},"label":"string?","name":"string","unit":"string?","value":{"type":"union","variants":["number","boolean","string"]}},"type":"object"},"type":"array"},"subCategoryId":{"desc":"The owning sub-category's id.","type":"string"},"subtitle":{"desc":"The product subtitle.","optional":true,"type":"string"},"weight":{"desc":"Display order within its parent, ascending. Always present — OpeHub defaults it to 0.","type":"number"}}}}},"result":{"kind":"rows","maxRows":100000,"maxBytes":4194304,"classification":"public","maximumFreshnessMs":60000},"stream":{"semantics":"none","recovery":"none"},"authority":{"mode":"public"}},"sharing":"shareable","requires":{"authority":false,"authorityIdentity":false,"resourceIdentity":true}},{"logicalName":"opehubLeads","providerName":"opehubLeads","definition":{"schema":"singularity.source-definition.v1","id":"source:b9c2608facb129a9","descriptor":{"schema":"singularity.source-definition.v1","namespace":"opehub.rest","version":"0.3.0","name":"opehubLeads","contract":{"desc":"Dealer-scoped website lead submission. Requires a First Light managed read key or an admin key. No reads are exposed.","maxRows":1,"collections":{"websiteLeads":{"desc":"Submit a customer inquiry for one or more inventory listings. The host keeps it and answers at once, then delivers it to OpeHub under one submission id, retrying for up to an hour until OpeHub takes it.","ops":["create"],"inputs":{"create":["addOnSelections","contact","customerName","inventoryIds"]},"create":["contact","customerName","inventoryIds"],"anonymous":["create"],"enforcedBy":{"create":"the host data proxy and the app's write rules, then the provider under the app's configured credentials"},"fields":{"id":{"type":"string","desc":"The local row id of this write; the provider never sees it."},"addOnSelections":{"desc":"Optional customer choices: each inventoryId must occur in inventoryIds once, with one to fifty distinct addOnIds from that listing. Omit when none are selected.","items":{"members":{"addOnIds":{"items":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"maxItems":50,"minItems":1,"type":"array","unique":true},"inventoryId":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"type":"object"},"maxItems":20,"optional":true,"type":"array","unique":"inventoryId"},"contact":{"desc":"At least one of email or phone is required.","type":"union","variants":[{"members":{"email":{"maxLength":254,"pattern":"^[A-Za-z0-9_+\\-]+(?:\\.[A-Za-z0-9_+\\-]+)*@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)+$","type":"string"},"phone":{"maxLength":32,"pattern":"^\\+?[ ().-]*(?:\\d[ ().-]*){7,}$","type":"string","optional":true}},"type":"object"},{"members":{"email":{"maxLength":254,"pattern":"^[A-Za-z0-9_+\\-]+(?:\\.[A-Za-z0-9_+\\-]+)*@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)+$","type":"string","optional":true},"phone":{"maxLength":32,"pattern":"^\\+?[ ().-]*(?:\\d[ ().-]*){7,}$","type":"string"}},"type":"object"}]},"customerName":{"pattern":"^[^\\u0000-\\u001f\\u007f]*$","type":"string","desc":"Customer name, 1–120 characters.","maxLength":120,"minLength":1},"inventoryIds":{"desc":"One to twenty distinct inventory listing ids.","items":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"maxItems":20,"minItems":1,"type":"array","unique":true}},"read":"reviewed"}}},"result":{"kind":"rows","maxRows":1,"maxBytes":4194304,"classification":"private"},"stream":{"semantics":"none","recovery":"none"},"authority":{"mode":"lease"},"id":"source:b9c2608facb129a9"},"contract":{"desc":"Dealer-scoped website lead submission. Requires a First Light managed read key or an admin key. No reads are exposed.","maxRows":1,"collections":{"websiteLeads":{"desc":"Submit a customer inquiry for one or more inventory listings. The host keeps it and answers at once, then delivers it to OpeHub under one submission id, retrying for up to an hour until OpeHub takes it.","ops":["create"],"inputs":{"create":["addOnSelections","contact","customerName","inventoryIds"]},"create":["contact","customerName","inventoryIds"],"anonymous":["create"],"enforcedBy":{"create":"the host data proxy and the app's write rules, then the provider under the app's configured credentials"},"fields":{"id":{"type":"string","desc":"The local row id of this write; the provider never sees it."},"addOnSelections":{"desc":"Optional customer choices: each inventoryId must occur in inventoryIds once, with one to fifty distinct addOnIds from that listing. Omit when none are selected.","items":{"members":{"addOnIds":{"items":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"maxItems":50,"minItems":1,"type":"array","unique":true},"inventoryId":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"type":"object"},"maxItems":20,"optional":true,"type":"array","unique":"inventoryId"},"contact":{"desc":"At least one of email or phone is required.","type":"union","variants":[{"members":{"email":{"maxLength":254,"pattern":"^[A-Za-z0-9_+\\-]+(?:\\.[A-Za-z0-9_+\\-]+)*@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)+$","type":"string"},"phone":{"maxLength":32,"pattern":"^\\+?[ ().-]*(?:\\d[ ().-]*){7,}$","type":"string","optional":true}},"type":"object"},{"members":{"email":{"maxLength":254,"pattern":"^[A-Za-z0-9_+\\-]+(?:\\.[A-Za-z0-9_+\\-]+)*@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)+$","type":"string","optional":true},"phone":{"maxLength":32,"pattern":"^\\+?[ ().-]*(?:\\d[ ().-]*){7,}$","type":"string"}},"type":"object"}]},"customerName":{"pattern":"^[^\\u0000-\\u001f\\u007f]*$","type":"string","desc":"Customer name, 1–120 characters.","maxLength":120,"minLength":1},"inventoryIds":{"desc":"One to twenty distinct inventory listing ids.","items":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"maxItems":20,"minItems":1,"type":"array","unique":true}},"read":"reviewed"}}},"result":{"kind":"rows","maxRows":1,"maxBytes":4194304,"classification":"private"},"stream":{"semantics":"none","recovery":"none"},"authority":{"mode":"lease"}},"sharing":"shareable","requires":{"authority":true,"authorityIdentity":false,"resourceIdentity":true}}],"assetSources":{},"hostRequirements":{"server":{"appId":true,"mounts":[],"inputs":[]},"browser":{"appId":true,"mounts":[{"name":"capabilityData","desc":"the app host's capability-data door; the browser reads and writes through `<mount>/<appId>/<source>` and the host holds the credentials"}],"inputs":[]},"both":{"appId":true,"mounts":[],"inputs":[]}}}],"assets":[{"name":"media","bucket":"media","source":"tenantMedia","access":{"read":[{"actors":["visitor"]}],"upload":[{"actors":["administrator"]}],"remove":[{"actors":["administrator"]}],"uploadUrl":[{"actors":["administrator"]}]},"scopes":{},"accept":[],"maxBytes":null,"params":{"lane":"public"},"notify":{"ok":null,"problem":"auto"},"reconciles":null}],"order":{"server":["formEmail","opehub"],"browser":["formEmail","media","opehub"],"both":["formEmail","media","opehub"]}},"auth":{"analysis":null,"actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}]}},"visitor":{"initialState":{"addOnPick":{"ids":[],"inventoryId":""},"cart":[],"categories":[],"checkout":{"attempted":false,"email":"","name":"","phone":""},"contactForm":{"attempted":false,"email":"","message":"","name":"","phone":"","topic":"sales"},"contactMessages":[],"contactSent":"","dealer":[],"disclosure":null,"invCondition":"all","invQuery":"","invSort":"newest","inventory":[],"lastAdded":"","leads":[],"metric":false,"navOpen":false,"orderSent":null,"promotions":[],"viewingCatalog":"","websiteContent":[],"wholegoods":[],"path":"/","hash":"","origin":"","renderedAt":null,"viewerUtcOffsetMinutes":null,"navigating":false,"$default":{"ProductDetail__u0":{"active":""}}},"view":{"children":[{"tag":"style","children":["@keyframes mui-kf-breathe { 0% { opacity: 1 } 100% { opacity: 0.45 } }\n@keyframes mui-kf-fade { 0% { opacity: 0 } 100% { opacity: 1 } }\n@keyframes mui-kf-gridDrift { 0% { background-position: 0 0, 0 0 } 100% { background-position: 64px 64px, 64px 64px } }\n@keyframes mui-kf-heroZoom { 0% { transform: scale(1.12) translate3d(-1.5%, 0, 0) } 100% { transform: scale(1.02) translate3d(0, 0, 0) } }\n@keyframes mui-kf-rise { 0% { opacity: 0; transform: translate3d(0, 1.25rem, 0) } 100% { opacity: 1; transform: translate3d(0, 0, 0) } }\n@keyframes mui-kf-slideIn { 0% { opacity: 0.6; transform: translate3d(2rem, 0, 0) } 100% { opacity: 1; transform: translate3d(0, 0, 0) } }\n@keyframes mui-kf-spin { 0% { transform: rotate(0deg) } 100% { transform: rotate(360deg) } }\n@keyframes mui-kf-sweep { 0% { transform: translateX(-100%) } 100% { transform: translateX(250%) } }\n.mui-m-drawerIn { animation-name: mui-kf-slideIn; animation-duration: 260ms; animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1); animation-delay: 0ms; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-gridDrift { animation-name: mui-kf-gridDrift; animation-duration: 24s; animation-timing-function: linear; animation-delay: 0ms; animation-iteration-count: infinite; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-heroZoom { animation-name: mui-kf-heroZoom; animation-duration: 16s; animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1); animation-delay: 0ms; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-inView { animation-name: mui-kf-rise; animation-timeline: view(); animation-range: entry 0% entry 60%; animation-duration: auto; animation-timing-function: ease; animation-fill-mode: both; }\n.mui-m-rise { animation-name: mui-kf-rise; animation-duration: 700ms; animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1); animation-delay: 0ms; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-rise2 { animation-name: mui-kf-rise; animation-duration: 700ms; animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1); animation-delay: 120ms; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-rise3 { animation-name: mui-kf-rise; animation-duration: 700ms; animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1); animation-delay: 240ms; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-rise4 { animation-name: mui-kf-rise; animation-duration: 700ms; animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1); animation-delay: 380ms; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-scrimIn { animation-name: mui-kf-fade; animation-duration: 180ms; animation-timing-function: ease-out; animation-delay: 0ms; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-spinning { animation-name: mui-kf-spin; animation-duration: 900ms; animation-timing-function: linear; animation-delay: 0ms; animation-iteration-count: infinite; animation-direction: normal; animation-fill-mode: both; }\n.mui-m-sweep { animation-name: mui-kf-sweep; animation-duration: 5s; animation-timing-function: ease-in-out; animation-delay: 1.2s; animation-iteration-count: infinite; animation-direction: normal; animation-fill-mode: both; }\n@media (prefers-reduced-motion: reduce) { .mui-m-drawerIn { animation-name: mui-kf-fade; } .mui-m-gridDrift { animation: none } .mui-m-heroZoom { animation: none } .mui-m-inView { animation: none } .mui-m-rise { animation-name: mui-kf-fade; } .mui-m-rise2 { animation-name: mui-kf-fade; } .mui-m-rise3 { animation-name: mui-kf-fade; } .mui-m-rise4 { animation-name: mui-kf-fade; } .mui-m-spinning { animation-name: mui-kf-breathe; animation-duration: 1400ms; animation-timing-function: ease-in-out; animation-direction: alternate; } .mui-m-sweep { animation: none } }"]},{"tag":"style","children":["@font-face { font-family: \"Archivo\"; src: url(\"/__fl/media/app-b26bed68205733a65f3eb5c1c628f9ee/public/media/v2/public/imported/73a8d9b31f82407e8748c3ecc16981c07377a78a2c8dc56ee90321136b66a5b1\"); font-display: swap; font-weight: 400 800; font-style: normal; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }\n:root { --mui-t-brand: color-mix(in srgb, #d85b08 78%, black); --mui-t-canvas: #f3e8d5; --mui-t-danger: #b42318; --mui-t-dangerSoft: #fdecea; --mui-t-fontSans: 'Archivo', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; --mui-t-ink: #1b1915; --mui-t-line: #ddd4c4; --mui-t-lineStrong: #a39b8e; --mui-t-maxW: 76rem; --mui-t-muted: #57524b; --mui-t-radius: 4px; --mui-t-s1: 0.25rem; --mui-t-s2: 0.5rem; --mui-t-s3: 0.75rem; --mui-t-s4: 1rem; --mui-t-s5: 1.5rem; --mui-t-s6: 2rem; --mui-t-s7: 3rem; --mui-t-s8: 4.5rem; --mui-t-s9: 6rem; --mui-t-scrim: rgba(28, 18, 10, 0.6); --mui-t-shadowCard: 0 1px 2px rgba(40, 24, 10, 0.06), 0 10px 28px -14px rgba(40, 24, 10, 0.24); --mui-t-shadowLift: 0 2px 6px rgba(40, 24, 10, 0.08), 0 24px 48px -20px rgba(40, 24, 10, 0.38); --mui-t-steel: #7d8780; --mui-t-success: #146c43; --mui-t-successSoft: #e5f3ec; --mui-t-surface: #ffffff; --mui-t-tap: 2.75rem; }\n:where(*, ::before, ::after) { --mui-t-brandDeep: color-mix(in srgb, var(--mui-t-brand) 60%, black); --mui-t-brandHover: color-mix(in srgb, var(--mui-t-brand) 82%, black); --mui-t-brandInk: oklch(from var(--mui-t-brand) clamp(0, (0.68 - l) * 1000, 1) 0 0); --mui-t-brandTint: color-mix(in srgb, var(--mui-t-brand) 8%, white); --mui-t-steelInk: color-mix(in oklch, var(--mui-t-steel) 70%, black); --mui-t-steelTint: color-mix(in oklch, var(--mui-t-steel) 14%, white); }\n.mui-v-CartPage-alertIcon { color: var(--mui-t-danger); margin-top: 0.1rem; }\n.mui-v-CartPage-alertTitle { font-weight: 800; margin: 0; }\n.mui-v-CartPage-colTitle { border-bottom: 2px solid var(--mui-t-ink); font-size: 1.25rem; font-weight: 800; margin: 0 0 var(--mui-t-s3); padding-bottom: var(--mui-t-s2); }\n.mui-v-CartPage-done { background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); border-top: 4px solid var(--mui-t-success); display: grid; gap: var(--mui-t-s4); justify-items: start; outline: none; padding: var(--mui-t-s6); }\n.mui-v-CartPage-empty { background: var(--mui-t-surface); border: 1.5px dashed var(--mui-t-lineStrong); border-radius: var(--mui-t-radius); display: grid; gap: var(--mui-t-s3); justify-items: center; padding: var(--mui-t-s8) var(--mui-t-s5); text-align: center; }\n.mui-v-CartPage-emptyIcon { background: var(--mui-t-brandTint); border-radius: var(--mui-t-radius); color: var(--mui-t-brand); display: grid; height: 3rem; place-items: center; width: 3rem; }\n.mui-v-CartPage-emptyTitle { font-size: 1.375rem; font-weight: 800; margin: 0; }\n.mui-v-CartPage-form { display: grid; gap: var(--mui-t-s4); margin-top: var(--mui-t-s4); }\n.mui-v-CartPage-img { height: calc(100% - 0.5rem); inset: 0.25rem; object-fit: contain; position: absolute; width: calc(100% - 0.5rem); }\n.mui-v-CartPage-item { align-items: start; background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); display: grid; gap: var(--mui-t-s3); grid-template-columns: 4.5rem 1fr; padding: var(--mui-t-s3); }\n@media (min-width: 640px) { .mui-v-CartPage-item { grid-template-columns: 5.5rem 1fr auto; } }\n.mui-v-CartPage-itemEnd { align-items: center; display: flex; gap: var(--mui-t-s2); grid-column: 1 / -1; justify-content: space-between; }\n@media (min-width: 640px) { .mui-v-CartPage-itemEnd { display: grid; grid-column: auto; justify-items: end; } }\n.mui-v-CartPage-itemText { display: grid; gap: 0.2rem; min-width: 0; }\n.mui-v-CartPage-layout { display: grid; gap: var(--mui-t-s6); }\n@media (min-width: 1024px) { .mui-v-CartPage-layout { align-items: start; gap: var(--mui-t-s7); grid-template-columns: 1.5fr 1fr; } }\n.mui-v-CartPage-list { display: grid; gap: var(--mui-t-s3); list-style: none; margin: 0; padding: 0; }\n.mui-v-CartPage-meta { color: var(--mui-t-muted); font-size: 0.875rem; margin: 0; }\n.mui-v-CartPage-name { color: var(--mui-t-ink); font-weight: 800; line-height: 1.25; text-decoration: none; }\n.mui-v-CartPage-name:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: var(--mui-t-brand); text-decoration: underline; }\n.mui-v-CartPage-name:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-CartPage-okIcon { background: var(--mui-t-successSoft); border-radius: var(--mui-t-radius); color: var(--mui-t-success); display: grid; height: 3rem; place-items: center; width: 3rem; }\n.mui-v-CartPage-panel { background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); border-top: 4px solid var(--mui-t-brand); padding: var(--mui-t-s5); }\n@media (min-width: 1024px) { .mui-v-CartPage-panel { position: sticky; top: var(--mui-t-s4); } }\n.mui-v-CartPage-price { font-size: 1.125rem; font-variant-numeric: tabular-nums; font-weight: 800; }\n.mui-v-CartPage-remove { align-items: center; background: transparent; border: 0; color: var(--mui-t-danger); cursor: pointer; display: inline-flex; font: inherit; font-size: 0.875rem; font-weight: 700; gap: 0.35rem; min-height: var(--mui-t-tap); padding: 0 var(--mui-t-s2); }\n.mui-v-CartPage-remove:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { text-decoration: underline; }\n.mui-v-CartPage-remove:focus-visible { outline: 2px solid var(--mui-t-danger); outline-offset: 2px; }\n.mui-v-CartPage-remove:is(:disabled, [aria-disabled=\"true\"]) { cursor: not-allowed; opacity: 0.5; }\n.mui-v-CartPage-row { display: flex; flex-wrap: wrap; gap: var(--mui-t-s3); }\n.mui-v-CartPage-thumb { aspect-ratio: 1 / 1; background: #ffffff; border: 1px solid var(--mui-t-line); border-radius: 2px; padding: 0.25rem; position: relative; }\n.mui-v-CartPage-total { border-top: 2px solid var(--mui-t-ink); display: flex; font-size: 1.0625rem; font-variant-numeric: tabular-nums; justify-content: space-between; margin: var(--mui-t-s4) 0 0; padding-top: var(--mui-t-s3); }\n.mui-v-CartPage-wrap { padding: var(--mui-t-s6) 0 var(--mui-t-s8); }\n.mui-v-CategoryTile-count { color: var(--mui-t-muted); font-size: 0.8125rem; font-weight: 600; }\n.mui-v-CategoryTile-frame { aspect-ratio: 1 / 1; background: #ffffff; border-bottom: 1px solid var(--mui-t-line); display: grid; overflow: hidden; padding: var(--mui-t-s3); place-items: center; position: relative; }\n.mui-v-CategoryTile-frame--photo.mui-v-CategoryTile-frame--photo.mui-v-CategoryTile-frame--photo { padding: 0; }\n.mui-v-CategoryTile-go { background: var(--mui-t-brandTint); border-radius: var(--mui-t-radius); bottom: var(--mui-t-s3); color: var(--mui-t-brand); display: grid; height: 2rem; place-items: center; position: absolute; right: var(--mui-t-s3); transition: background-color 160ms ease, color 160ms ease; width: 2rem; }\n.mui-v-CategoryTile-tile:is(:hover, :focus-within) .mui-v-CategoryTile-go { background: var(--mui-t-brand); color: #ffffff; }\n@media (prefers-reduced-motion: reduce) { .mui-v-CategoryTile-go { transition: none; } }\n.mui-v-CategoryTile-img { display: block; height: calc(100% - 1.5rem); inset: 0.75rem; object-fit: contain; position: absolute; width: calc(100% - 1.5rem); }\n.mui-v-CategoryTile-img--photo.mui-v-CategoryTile-img--photo.mui-v-CategoryTile-img--photo { height: 100%; inset: 0; object-fit: cover; width: 100%; }\n.mui-v-CategoryTile-meta { display: grid; gap: 0.2rem; padding: var(--mui-t-s3) var(--mui-t-s4) var(--mui-t-s4); padding-right: 3rem; }\n.mui-v-CategoryTile-name { font-size: 1.0625rem; font-weight: 800; letter-spacing: -0.01em; line-height: 1.2; }\n.mui-v-CategoryTile-placeholder { color: var(--mui-t-lineStrong); }\n.mui-v-CategoryTile-tile { background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); color: var(--mui-t-ink); display: grid; grid-template-rows: auto 1fr; overflow: hidden; position: relative; text-decoration: none; transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease; }\n.mui-v-CategoryTile-tile:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { border-color: var(--mui-t-brand); box-shadow: var(--mui-t-shadowLift); transform: translateY(-2px); }\n.mui-v-CategoryTile-tile:focus-visible { outline: 3px solid var(--mui-t-brand); outline-offset: 3px; }\n@media (prefers-reduced-motion: reduce) { .mui-v-CategoryTile-tile { transition: none; } .mui-v-CategoryTile-tile:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { transform: none; } }\n.mui-v-ContactPage-about { display: grid; gap: var(--mui-t-s6); }\n@media (min-width: 1024px) { .mui-v-ContactPage-about { grid-template-columns: 1fr 1.2fr; } }\n.mui-v-ContactPage-aboutBand { background: var(--mui-t-surface); border-top: 1px solid var(--mui-t-line); padding: var(--mui-t-s8) 0; }\n@media (min-width: 768px) { .mui-v-ContactPage-aboutBand { padding: var(--mui-t-s9) 0; } }\n.mui-v-ContactPage-aboutBody { display: grid; gap: var(--mui-t-s4); }\n.mui-v-ContactPage-aboutHead { align-content: start; display: grid; gap: var(--mui-t-s3); }\n.mui-v-ContactPage-aboutText { color: var(--mui-t-ink); font-size: 1.0625rem; line-height: 1.7; margin: 0; }\n.mui-v-ContactPage-actions { display: flex; flex-wrap: wrap; gap: var(--mui-t-s3); }\n.mui-v-ContactPage-address { font-size: 1.0625rem; font-style: normal; font-weight: 600; line-height: 1.6; }\n.mui-v-ContactPage-alertTitle { font-weight: 800; margin: 0; }\n.mui-v-ContactPage-card { background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); border-top: 4px solid var(--mui-t-brand); padding: var(--mui-t-s5); }\n@media (min-width: 768px) { .mui-v-ContactPage-card { padding: var(--mui-t-s6); } }\n.mui-v-ContactPage-cardTitle { font-size: 1.375rem; font-weight: 800; letter-spacing: -0.015em; margin: 0; }\n.mui-v-ContactPage-chev { color: var(--mui-t-muted); pointer-events: none; position: absolute; right: var(--mui-t-s3); top: 50%; transform: translateY(-50%); }\n.mui-v-ContactPage-form { display: grid; gap: var(--mui-t-s4); margin-top: var(--mui-t-s4); }\n.mui-v-ContactPage-grid { display: grid; gap: var(--mui-t-s6); padding: var(--mui-t-s6) 0 var(--mui-t-s8); }\n@media (min-width: 1024px) { .mui-v-ContactPage-grid { align-items: start; gap: var(--mui-t-s7); grid-template-columns: 1.3fr 1fr; } }\n.mui-v-ContactPage-info { background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); overflow: hidden; }\n.mui-v-ContactPage-infoBody { display: grid; gap: var(--mui-t-s4); padding: var(--mui-t-s5); }\n.mui-v-ContactPage-mail { align-items: center; color: var(--mui-t-brand); display: inline-flex; font-weight: 700; gap: var(--mui-t-s2); min-height: var(--mui-t-tap); overflow-wrap: anywhere; text-decoration: none; }\n.mui-v-ContactPage-mail:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: var(--mui-t-brand); text-decoration: underline; }\n.mui-v-ContactPage-mail:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-ContactPage-ok { display: grid; gap: var(--mui-t-s3); justify-items: start; margin-top: var(--mui-t-s4); outline: none; }\n.mui-v-ContactPage-okIcon { background: var(--mui-t-successSoft); border-radius: var(--mui-t-radius); color: var(--mui-t-success); display: grid; height: 3rem; place-items: center; width: 3rem; }\n.mui-v-ContactPage-okTitle { font-size: 1.25rem; font-weight: 800; margin: 0; }\n.mui-v-ContactPage-pair { display: grid; gap: var(--mui-t-s4); }\n@media (min-width: 640px) { .mui-v-ContactPage-pair { grid-template-columns: 1fr 1fr; } }\n.mui-v-ContactPage-photo { aspect-ratio: 3 / 2; display: block; height: auto; object-fit: cover; width: 100%; }\n.mui-v-ContactPage-pillar { background: var(--mui-t-canvas); border-left: 3px solid var(--mui-t-brand); display: grid; gap: var(--mui-t-s2); padding: var(--mui-t-s4); }\n.mui-v-ContactPage-pillarIcon { color: var(--mui-t-brand); }\n.mui-v-ContactPage-pillarTitle { font-size: 1.0625rem; font-weight: 800; margin: 0; }\n.mui-v-ContactPage-pillars { display: grid; gap: var(--mui-t-s3); grid-column: 1 / -1; list-style: none; margin: 0; padding: 0; }\n@media (min-width: 768px) { .mui-v-ContactPage-pillars { grid-template-columns: repeat(3, minmax(0, 1fr)); } }\n.mui-v-ContactPage-select { padding-right: 2.5rem; }\n.mui-v-ContactPage-selectWrap { position: relative; }\n.mui-v-ContactPage-small { color: var(--mui-t-muted); font-size: 0.9375rem; line-height: 1.5; margin: 0; }\n.mui-v-ContactPage-textarea { min-height: 8rem; resize: vertical; }\n.mui-v-FinanceDialog-actions { display: flex; flex-direction: column-reverse; gap: var(--mui-t-s3); }\n@media (min-width: 640px) { .mui-v-FinanceDialog-actions { flex-direction: row; justify-content: flex-end; } }\n.mui-v-FinanceDialog-backdrop { align-items: flex-end; background: var(--mui-t-scrim); display: flex; inset: 0; justify-content: center; overscroll-behavior: contain; position: fixed; z-index: 70; }\n@media (min-width: 768px) { .mui-v-FinanceDialog-backdrop { align-items: center; padding: var(--mui-t-s6); } }\n.mui-v-FinanceDialog-body { color: var(--mui-t-ink); font-size: 0.875rem; line-height: 1.6; margin: 0; white-space: pre-line; }\n.mui-v-FinanceDialog-dd { font-size: 1.25rem; font-variant-numeric: tabular-nums; font-weight: 800; margin: 0; }\n.mui-v-FinanceDialog-dt { color: var(--mui-t-muted); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap; }\n.mui-v-FinanceDialog-head { align-items: flex-start; display: flex; gap: var(--mui-t-s4); justify-content: space-between; }\n.mui-v-FinanceDialog-note { color: var(--mui-t-muted); font-size: 0.8125rem; line-height: 1.5; margin: 0; }\n.mui-v-FinanceDialog-plan { font-weight: 700; margin: 0; }\n.mui-v-FinanceDialog-sheet { background: var(--mui-t-surface); border-top: 4px solid var(--mui-t-brand); box-shadow: var(--mui-t-shadowLift); color: var(--mui-t-ink); display: grid; gap: var(--mui-t-s4); max-height: 90dvh; max-width: 34rem; overflow-y: auto; padding: var(--mui-t-s5); width: 100%; }\n@media (min-width: 768px) { .mui-v-FinanceDialog-sheet { border-bottom: 4px solid var(--mui-t-brand); } }\n.mui-v-FinanceDialog-term { display: grid; gap: 0.2rem; padding: var(--mui-t-s3); }\n.mui-v-FinanceDialog-terms { background: var(--mui-t-brandTint); border-radius: var(--mui-t-radius); display: grid; grid-template-columns: repeat(3, auto); justify-content: space-between; margin: 0; }\n.mui-v-FinanceDialog-title { font-size: 1.375rem; font-weight: 800; letter-spacing: -0.015em; line-height: 1.15; margin: var(--mui-t-s2) 0 0; }\n.mui-v-FormField-error { align-items: center; color: var(--mui-t-danger); display: flex; font-size: 0.875rem; font-weight: 600; gap: 0.35rem; margin: 0; }\n.mui-v-FormField-label { display: flex; font-size: 0.875rem; font-weight: 700; justify-content: space-between; }\n.mui-v-FormField-opt { color: var(--mui-t-muted); font-size: 0.75rem; font-weight: 600; }\n.mui-v-FormField-root { display: grid; gap: 0.4rem; min-width: 0; }\n.mui-v-Home-bg { display: block; height: 100%; object-fit: cover; object-position: 30% 55%; width: 100%; }\n.mui-v-Home-bgWrap { inset: 0; overflow: hidden; position: absolute; z-index: -3; }\n.mui-v-Home-catGrid { display: grid; gap: var(--mui-t-s3); grid-template-columns: repeat(2, minmax(0, 1fr)); }\n@media (min-width: 768px) { .mui-v-Home-catGrid { gap: var(--mui-t-s4); grid-template-columns: repeat(3, minmax(0, 1fr)); } }\n@media (min-width: 1024px) { .mui-v-Home-catGrid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }\n.mui-v-Home-check { align-items: flex-start; display: flex; font-weight: 600; gap: var(--mui-t-s3); }\n.mui-v-Home-checkIcon { color: var(--mui-t-brand); }\n.mui-v-Home-checks { display: grid; gap: var(--mui-t-s3); list-style: none; margin: var(--mui-t-s2) 0; padding: 0; }\n.mui-v-Home-content { padding: var(--mui-t-s8) 0 var(--mui-t-s6); position: relative; }\n@media (min-width: 1024px) { .mui-v-Home-content { padding: var(--mui-t-s8) 0; } }\n.mui-v-Home-copy { display: grid; gap: var(--mui-t-s5); max-width: 46rem; }\n.mui-v-Home-ctas { display: flex; flex-wrap: wrap; gap: var(--mui-t-s3); }\n.mui-v-Home-ctasDark { display: flex; flex-wrap: wrap; gap: var(--mui-t-s3); margin-top: var(--mui-t-s2); }\n.mui-v-Home-grid { -webkit-mask-image: linear-gradient(90deg, #000 0%, rgba(0, 0, 0, 0.6) 40%, transparent 75%); background-image: linear-gradient(to right, rgba(255, 255, 255, 0.07) 1px, transparent 1px), linear-gradient(to bottom, rgba(255, 255, 255, 0.07) 1px, transparent 1px); background-size: 64px 64px, 64px 64px; inset: 0; mask-image: linear-gradient(90deg, #000 0%, rgba(0, 0, 0, 0.6) 40%, transparent 75%); position: absolute; z-index: -1; }\n.mui-v-Home-headLink { align-items: center; color: var(--mui-t-brand); display: inline-flex; font-weight: 700; gap: var(--mui-t-s2); min-height: var(--mui-t-tap); text-decoration: none; }\n.mui-v-Home-headLink:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: var(--mui-t-brand); text-decoration: underline; text-underline-offset: 4px; }\n.mui-v-Home-headLink:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-Home-headText { display: grid; gap: var(--mui-t-s3); max-width: 44rem; }\n.mui-v-Home-hero { align-items: flex-end; background: var(--mui-t-brandDeep); color: #ffffff; display: flex; isolation: isolate; min-height: min(86dvh, 48rem); overflow: hidden; position: relative; }\n@media (min-width: 1024px) { .mui-v-Home-hero { align-items: center; min-height: min(82dvh, 46rem); } }\n.mui-v-Home-lede { color: rgba(255, 255, 255, 0.86); font-size: 1.125rem; line-height: 1.6; margin: 0; max-width: 34rem; }\n@media (min-width: 768px) { .mui-v-Home-lede { font-size: 1.25rem; } }\n.mui-v-Home-promoGrid { display: grid; gap: var(--mui-t-s4); }\n@media (min-width: 768px) { .mui-v-Home-promoGrid { gap: var(--mui-t-s5); grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n.mui-v-Home-section { padding: var(--mui-t-s8) 0; }\n@media (min-width: 768px) { .mui-v-Home-section { padding: var(--mui-t-s9) 0; } }\n.mui-v-Home-sectionAlt { background: var(--mui-t-surface); border-bottom: 1px solid var(--mui-t-line); border-top: 1px solid var(--mui-t-line); }\n.mui-v-Home-sectionHead { align-items: flex-end; border-bottom: 2px solid var(--mui-t-ink); display: flex; flex-wrap: wrap; gap: var(--mui-t-s4); justify-content: space-between; margin-bottom: var(--mui-t-s6); padding-bottom: var(--mui-t-s4); }\n.mui-v-Home-shade { background: linear-gradient(180deg, rgba(30, 16, 6, 0.15) 0%, rgba(30, 16, 6, 0.55) 45%, rgba(30, 16, 6, 0.94) 100%); inset: 0; position: absolute; z-index: -2; }\n@media (min-width: 1024px) { .mui-v-Home-shade { background: linear-gradient(90deg, rgba(30, 16, 6, 0.92) 0%, rgba(30, 16, 6, 0.7) 38%, rgba(30, 16, 6, 0.1) 72%, rgba(30, 16, 6, 0) 100%); } }\n.mui-v-Home-shopCopy { display: grid; gap: var(--mui-t-s4); }\n.mui-v-Home-shopGrid { align-items: center; display: grid; gap: var(--mui-t-s6); }\n@media (min-width: 1024px) { .mui-v-Home-shopGrid { gap: var(--mui-t-s8); grid-template-columns: 1.1fr 1fr; } }\n.mui-v-Home-shopPhoto { aspect-ratio: 3 / 2; display: block; height: auto; object-fit: cover; width: 100%; }\n.mui-v-Home-shopPhotoWrap { border-radius: var(--mui-t-radius); box-shadow: 12px 12px 0 var(--mui-t-brand); overflow: hidden; position: relative; }\n.mui-v-Home-stat { display: grid; gap: var(--mui-t-s1); padding: var(--mui-t-s4) var(--mui-t-s3) 0 0; }\n.mui-v-Home-statIcon { color: rgba(255, 255, 255, 0.75); }\n.mui-v-Home-statLabel { font-size: 0.8125rem; font-weight: 700; line-height: 1.25; }\n@media (min-width: 768px) { .mui-v-Home-statLabel { font-size: 0.9375rem; } }\n.mui-v-Home-strip { border-top: 1px solid rgba(255, 255, 255, 0.25); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); list-style: none; margin-bottom: 0; margin-top: var(--mui-t-s6); overflow: hidden; padding: 0; position: relative; }\n@media (min-width: 1024px) { .mui-v-Home-strip { margin-top: var(--mui-t-s7); max-width: 40rem; } }\n.mui-v-Home-sweepLine { background: linear-gradient(90deg, transparent, #ffffff, transparent); height: 2px; left: 0; position: absolute; top: -1px; width: 40%; }\n.mui-v-Home-tag { align-items: center; backdrop-filter: blur(6px); background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.35); border-radius: var(--mui-t-radius); display: inline-flex; font-size: 0.75rem; font-weight: 700; gap: var(--mui-t-s2); justify-self: start; letter-spacing: 0.14em; line-height: 1.2; padding: 0.45rem 0.8rem; text-transform: uppercase; }\n.mui-v-Home-title { font-size: clamp(2.75rem, 1.6rem + 5.4vw, 5.5rem); font-weight: 800; letter-spacing: -0.035em; line-height: 0.94; margin: 0; text-wrap: balance; }\n.mui-v-Home-titleAccent { background-image: linear-gradient(transparent 82%, var(--mui-t-brand) 82%, var(--mui-t-brand) 96%, transparent 96%); color: #ffffff; display: inline-block; padding-bottom: 0.05em; position: relative; }\n.mui-v-InventoryCard-badges { display: flex; gap: var(--mui-t-s2); left: var(--mui-t-s3); position: absolute; top: var(--mui-t-s3); }\n.mui-v-InventoryCard-body { display: grid; gap: var(--mui-t-s3); grid-template-rows: auto auto auto 1fr auto; padding: var(--mui-t-s4); }\n.mui-v-InventoryCard-card { background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); display: grid; grid-template-rows: auto 1fr; overflow: hidden; transition: border-color 160ms ease, box-shadow 160ms ease; }\n.mui-v-InventoryCard-card:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { border-color: var(--mui-t-lineStrong); box-shadow: var(--mui-t-shadowCard); }\n@media (prefers-reduced-motion: reduce) { .mui-v-InventoryCard-card { transition: none; } }\n.mui-v-InventoryCard-cond { background: var(--mui-t-ink); border-radius: 2px; color: #ffffff; font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.1em; padding: 0.25rem 0.5rem; text-transform: uppercase; }\n.mui-v-InventoryCard-img { display: block; height: calc(100% - 2rem); inset: 1rem; object-fit: contain; position: absolute; width: calc(100% - 2rem); }\n.mui-v-InventoryCard-media { aspect-ratio: 4 / 3; background: #ffffff; border-bottom: 1px solid var(--mui-t-line); display: grid; overflow: hidden; padding: var(--mui-t-s4); place-items: center; position: relative; }\n.mui-v-InventoryCard-meta { color: var(--mui-t-muted); font-size: 0.8125rem; margin: 0; }\n.mui-v-InventoryCard-more { align-items: center; border-top: 1px solid var(--mui-t-line); color: var(--mui-t-brand); display: inline-flex; font-weight: 700; gap: var(--mui-t-s2); justify-content: space-between; margin-top: var(--mui-t-s1); min-height: var(--mui-t-tap); padding-top: var(--mui-t-s2); text-decoration: none; }\n.mui-v-InventoryCard-more:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: var(--mui-t-brandDeep); }\n.mui-v-InventoryCard-more:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-InventoryCard-name { font-size: 1.125rem; font-weight: 800; letter-spacing: -0.01em; line-height: 1.2; margin: 0; }\n.mui-v-InventoryCard-nameLink { color: var(--mui-t-ink); text-decoration: none; }\n.mui-v-InventoryCard-nameLink:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: var(--mui-t-brand); text-decoration: underline; text-underline-offset: 3px; }\n.mui-v-InventoryCard-nameLink:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-InventoryCard-noImg { color: var(--mui-t-lineStrong); }\n.mui-v-InventoryCard-promo { align-items: center; background: var(--mui-t-brand); border-radius: 2px; color: var(--mui-t-brandInk); display: inline-flex; font-size: 0.75rem; font-weight: 700; gap: 0.35rem; justify-self: start; margin: 0; padding: 0.3rem 0.55rem; }\n.mui-v-InventoryPage-banner { background: var(--mui-t-brandDeep); box-shadow: 0 -28px 36px -18px rgba(30, 16, 6, 0.55); color: #ffffff; position: relative; z-index: 1; }\n.mui-v-InventoryPage-bannerBar { display: flex; flex-direction: column; gap: var(--mui-t-s4); padding: var(--mui-t-s5) 0 var(--mui-t-s6); }\n@media (min-width: 768px) { .mui-v-InventoryPage-bannerBar { align-items: flex-end; flex-direction: row; justify-content: space-between; padding: var(--mui-t-s6) 0 var(--mui-t-s7); } }\n.mui-v-InventoryPage-bannerDesc { color: rgba(255, 255, 255, 0.85); font-size: 1.0625rem; line-height: 1.55; margin: 0; max-width: 44rem; }\n.mui-v-InventoryPage-bannerEyebrow { align-items: center; color: rgba(255, 255, 255, 0.8); display: inline-flex; font-size: 0.75rem; font-weight: 700; gap: var(--mui-t-s2); letter-spacing: 0.14em; margin: 0; text-transform: uppercase; }\n.mui-v-InventoryPage-bannerImg { display: block; height: auto; width: 100%; }\n.mui-v-InventoryPage-bannerPic { display: block; position: sticky; top: 0; width: 100%; z-index: 0; }\n.mui-v-InventoryPage-bannerText { display: grid; gap: var(--mui-t-s3); }\n.mui-v-InventoryPage-bannerTitle { font-size: clamp(2rem, 1.4rem + 2.6vw, 3.5rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1; margin: 0; text-wrap: balance; }\n.mui-v-InventoryPage-chev { color: var(--mui-t-muted); pointer-events: none; position: absolute; right: var(--mui-t-s3); top: 50%; transform: translateY(-50%); }\n.mui-v-InventoryPage-clear { align-items: center; background: transparent; border: 0; color: var(--mui-t-brand); cursor: pointer; display: inline-flex; font: inherit; font-weight: 700; gap: var(--mui-t-s2); min-height: var(--mui-t-tap); padding: 0 var(--mui-t-s2); }\n.mui-v-InventoryPage-clear:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: var(--mui-t-brandDeep); text-decoration: underline; }\n.mui-v-InventoryPage-clear:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-InventoryPage-control { appearance: none; background: var(--mui-t-surface); border: 1.5px solid var(--mui-t-lineStrong); border-radius: var(--mui-t-radius); color: var(--mui-t-ink); font: inherit; font-size: 1rem; min-height: 3rem; padding-left: var(--mui-v-InventoryPage-control-pad-start); padding-right: var(--mui-v-InventoryPage-control-pad-end); transition: border-color 160ms ease; width: 100%; }\n.mui-v-InventoryPage-control:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { border-color: var(--mui-t-ink); }\n.mui-v-InventoryPage-control:focus-visible { border-color: var(--mui-t-brand); outline: 2px solid var(--mui-t-brand); outline-offset: 1px; }\n@media (prefers-reduced-motion: reduce) { .mui-v-InventoryPage-control { transition: none; } }\n.mui-v-InventoryPage-count { color: var(--mui-t-muted); font-size: 0.875rem; font-variant-numeric: tabular-nums; font-weight: 700; letter-spacing: 0.04em; margin: 0; text-transform: uppercase; }\n.mui-v-InventoryPage-cover { background: var(--mui-t-canvas); box-shadow: 0 0 0 100vmax var(--mui-t-canvas); clip-path: inset(0 -100vmax); position: relative; z-index: 1; }\n.mui-v-InventoryPage-empty { background: var(--mui-t-surface); border: 1.5px dashed var(--mui-t-lineStrong); border-radius: var(--mui-t-radius); display: grid; gap: var(--mui-t-s3); justify-items: center; padding: var(--mui-t-s8) var(--mui-t-s5); text-align: center; }\n.mui-v-InventoryPage-emptyIcon { background: var(--mui-t-brandTint); border-radius: var(--mui-t-radius); color: var(--mui-t-brand); display: grid; height: 3rem; place-items: center; width: 3rem; }\n.mui-v-InventoryPage-emptyTitle { font-size: 1.375rem; font-weight: 800; margin: 0; }\n.mui-v-InventoryPage-field { display: grid; gap: 0.35rem; min-width: 0; }\n@media (min-width: 768px) { .mui-v-InventoryPage-fieldWide { grid-column: 1 / -1; } }\n@media (min-width: 1024px) { .mui-v-InventoryPage-fieldWide { grid-column: auto; } }\n.mui-v-InventoryPage-grid { display: grid; gap: var(--mui-t-s4); }\n@media (min-width: 768px) { .mui-v-InventoryPage-grid { gap: var(--mui-t-s5); grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n@media (min-width: 1024px) { .mui-v-InventoryPage-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }\n.mui-v-InventoryPage-label { color: var(--mui-t-muted); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }\n.mui-v-InventoryPage-meta { align-items: center; border-bottom: 2px solid var(--mui-t-ink); display: flex; flex-wrap: wrap; gap: var(--mui-t-s3); justify-content: space-between; margin: var(--mui-t-s5) 0; padding-bottom: var(--mui-t-s2); }\n.mui-v-InventoryPage-searchIcon { color: var(--mui-t-muted); left: 0.8rem; pointer-events: none; position: absolute; top: 50%; transform: translateY(-50%); }\n.mui-v-InventoryPage-searchWrap { position: relative; }\n.mui-v-InventoryPage-seg { background: var(--mui-t-surface); border: 1.5px solid var(--mui-t-lineStrong); color: var(--mui-t-ink); cursor: pointer; flex: 1; font: inherit; font-size: 0.9375rem; font-weight: 700; margin-left: -1.5px; min-height: 3rem; padding: 0 var(--mui-t-s4); }\n.mui-v-InventoryPage-seg:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: var(--mui-t-brandTint); color: var(--mui-t-ink); }\n.mui-v-InventoryPage-seg:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; position: relative; z-index: 2; }\n.mui-v-InventoryPage-seg--on.mui-v-InventoryPage-seg--on.mui-v-InventoryPage-seg--on { background: var(--mui-t-brand); border-color: var(--mui-t-brand); color: var(--mui-t-brandInk); position: relative; z-index: 1; }\n.mui-v-InventoryPage-segs { display: flex; padding-left: 1.5px; }\n.mui-v-InventoryPage-selectWrap { position: relative; }\n.mui-v-InventoryPage-skel { aspect-ratio: 3 / 4; background: linear-gradient(180deg, var(--mui-t-surface) 0 55%, var(--mui-t-line) 55% 56%, var(--mui-t-surface) 56%); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); }\n.mui-v-InventoryPage-toolbar { align-items: end; background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); display: grid; gap: var(--mui-t-s3); padding: var(--mui-t-s4); }\n@media (min-width: 768px) { .mui-v-InventoryPage-toolbar { grid-template-columns: repeat(3, minmax(0, 1fr)); } }\n@media (min-width: 1024px) { .mui-v-InventoryPage-toolbar { grid-template-columns: 1.4fr 1fr 1fr auto; } }\n.mui-v-InventoryPage-wrap { padding: var(--mui-t-s5) 0 var(--mui-t-s8); }\n.mui-v-PageHeader-band { background: var(--mui-t-surface); background-image: linear-gradient(to right, var(--mui-t-line) 1px, transparent 1px), linear-gradient(to bottom, var(--mui-t-line) 1px, transparent 1px); background-position: -1px -1px; background-size: 48px 48px; border-bottom: 1px solid var(--mui-t-line); }\n.mui-v-PageHeader-inner { display: grid; gap: var(--mui-t-s3); padding: var(--mui-t-s7) 0 var(--mui-t-s6); }\n@media (min-width: 768px) { .mui-v-PageHeader-inner { padding: var(--mui-t-s8) 0 var(--mui-t-s6); } }\n.mui-v-PageHeader-title { font-size: clamp(2.25rem, 1.5rem + 3vw, 3.75rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1; margin: 0; text-wrap: balance; }\n.mui-v-PriceBlock-cash { color: var(--mui-t-success); font-size: 1.25rem; font-variant-numeric: tabular-nums; font-weight: 800; letter-spacing: -0.02em; line-height: 1.1; }\n.mui-v-PriceBlock-cash--large.mui-v-PriceBlock-cash--large.mui-v-PriceBlock-cash--large { font-size: 2rem; }\n.mui-v-PriceBlock-cell { display: grid; gap: 0.1rem; }\n.mui-v-PriceBlock-info { background: transparent; border: 0; border-radius: var(--mui-t-radius); color: var(--mui-t-brand); cursor: pointer; display: inline-grid; flex-shrink: 0; height: var(--mui-t-tap); margin-right: -0.5rem; padding: 0; place-items: center; width: var(--mui-t-tap); }\n.mui-v-PriceBlock-info:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: var(--mui-t-surface); color: var(--mui-t-brandDeep); }\n.mui-v-PriceBlock-info:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: -2px; }\n.mui-v-PriceBlock-label { color: var(--mui-t-muted); font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }\n.mui-v-PriceBlock-pay { color: var(--mui-t-brand); font-size: 1.125rem; font-variant-numeric: tabular-nums; font-weight: 800; }\n.mui-v-PriceBlock-payRow { align-items: center; background: var(--mui-t-brandTint); border-radius: var(--mui-t-radius); display: flex; gap: var(--mui-t-s2); justify-content: space-between; min-height: var(--mui-t-tap); padding-left: var(--mui-t-s3); }\n.mui-v-PriceBlock-payText { align-items: baseline; display: flex; flex-wrap: wrap; gap: 0 0.3rem; }\n.mui-v-PriceBlock-per { color: var(--mui-t-brand); font-size: 0.875rem; font-weight: 700; }\n.mui-v-PriceBlock-price { font-size: 1.25rem; font-variant-numeric: tabular-nums; font-weight: 800; letter-spacing: -0.02em; line-height: 1.1; }\n.mui-v-PriceBlock-price--large.mui-v-PriceBlock-price--large.mui-v-PriceBlock-price--large { font-size: 2rem; }\n.mui-v-PriceBlock-prices { display: flex; flex-wrap: wrap; gap: var(--mui-t-s2) var(--mui-t-s5); }\n.mui-v-PriceBlock-root { display: grid; gap: var(--mui-t-s3); }\n.mui-v-PriceBlock-terms { color: var(--mui-t-muted); font-size: 0.8125rem; font-weight: 600; width: 100%; }\n.mui-v-ProductDetail-addOns { border: 0; display: grid; gap: var(--mui-t-s2); margin: 0; min-width: 0; padding: 0; }\n.mui-v-ProductDetail-adj { display: flex; font-size: 0.875rem; gap: var(--mui-t-s3); justify-content: space-between; }\n.mui-v-ProductDetail-adjAmt { font-variant-numeric: tabular-nums; font-weight: 700; }\n.mui-v-ProductDetail-adjNote { color: var(--mui-t-muted); font-size: 0.75rem; }\n.mui-v-ProductDetail-adjs { border-left: 3px solid var(--mui-t-steel); display: grid; gap: var(--mui-t-s1); list-style: none; margin: 0; padding: var(--mui-t-s2) var(--mui-t-s3); }\n.mui-v-ProductDetail-ao { align-items: center; background: var(--mui-t-surface); border: 1.5px solid var(--mui-t-line); border-radius: var(--mui-t-radius); cursor: pointer; display: grid; gap: var(--mui-t-s3); grid-template-columns: auto auto 1fr auto; min-height: 3.5rem; padding: var(--mui-t-s2) var(--mui-t-s3); transition: border-color 160ms ease, background-color 160ms ease; }\n.mui-v-ProductDetail-ao:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { border-color: var(--mui-t-lineStrong); }\n@media (prefers-reduced-motion: reduce) { .mui-v-ProductDetail-ao { transition: none; } }\n.mui-v-ProductDetail-ao--on.mui-v-ProductDetail-ao--on.mui-v-ProductDetail-ao--on { background: var(--mui-t-brandTint); border-color: var(--mui-t-brand); }\n.mui-v-ProductDetail-aoImg { background: #ffffff; border-radius: 2px; height: 2.75rem; object-fit: contain; width: 2.75rem; }\n.mui-v-ProductDetail-aoName { font-weight: 700; line-height: 1.25; }\n.mui-v-ProductDetail-aoPrice { font-variant-numeric: tabular-nums; font-weight: 800; }\n.mui-v-ProductDetail-aoPriceCol { display: grid; justify-items: end; text-align: right; }\n.mui-v-ProductDetail-aoText { display: grid; min-width: 0; }\n.mui-v-ProductDetail-buy { display: grid; gap: var(--mui-t-s3); }\n.mui-v-ProductDetail-check { accent-color: var(--mui-t-brand); cursor: pointer; height: 1.25rem; margin: 0; width: 1.25rem; }\n.mui-v-ProductDetail-check:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-ProductDetail-cond { background: var(--mui-t-ink); border-radius: 2px; color: #ffffff; font-size: 0.6875rem; font-weight: 800; letter-spacing: 0.1em; padding: 0.25rem 0.5rem; text-transform: uppercase; }\n.mui-v-ProductDetail-crumbHere { color: var(--mui-t-muted); max-width: 18rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.mui-v-ProductDetail-crumbLink { align-items: center; color: var(--mui-t-brand); display: inline-flex; font-weight: 600; min-height: var(--mui-t-tap); text-decoration: none; }\n.mui-v-ProductDetail-crumbLink:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: var(--mui-t-brand); text-decoration: underline; }\n.mui-v-ProductDetail-crumbLink:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-ProductDetail-crumbs { align-items: center; color: var(--mui-t-muted); display: flex; flex-wrap: wrap; font-size: 0.875rem; gap: var(--mui-t-s2); list-style: none; margin: 0 0 var(--mui-t-s3); padding: 0; }\n.mui-v-ProductDetail-cta { font-size: 1.0625rem; min-height: 3.5rem; }\n.mui-v-ProductDetail-desc { border-top: 1px solid var(--mui-t-line); color: var(--mui-t-ink); line-height: 1.65; margin: 0; padding-top: var(--mui-t-s4); white-space: pre-line; }\n.mui-v-ProductDetail-feat { background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); border-top: 3px solid var(--mui-t-brand); display: grid; gap: var(--mui-t-s2); padding: var(--mui-t-s4); }\n.mui-v-ProductDetail-featDesc { color: var(--mui-t-muted); font-size: 0.9375rem; line-height: 1.55; margin: 0; }\n.mui-v-ProductDetail-featGrid { display: grid; gap: var(--mui-t-s4); }\n@media (min-width: 768px) { .mui-v-ProductDetail-featGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n@media (min-width: 1024px) { .mui-v-ProductDetail-featGrid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }\n.mui-v-ProductDetail-featImg { background: #ffffff; border-radius: 2px; display: block; height: auto; margin-bottom: var(--mui-t-s2); width: 100%; }\n.mui-v-ProductDetail-featName { font-size: 1.0625rem; font-weight: 800; margin: 0; }\n.mui-v-ProductDetail-gallery { display: grid; gap: var(--mui-t-s3); min-width: 0; }\n@media (min-width: 1024px) { .mui-v-ProductDetail-gallery { align-self: start; position: sticky; top: var(--mui-t-s4); } }\n.mui-v-ProductDetail-hint { color: var(--mui-t-muted); font-size: 0.8125rem; margin: 0 0 var(--mui-t-s1); }\n.mui-v-ProductDetail-info { align-content: start; display: grid; gap: var(--mui-t-s4); min-width: 0; }\n.mui-v-ProductDetail-legend { font-size: 1rem; font-weight: 800; padding: 0; }\n.mui-v-ProductDetail-mainImg { display: block; height: calc(100% - 2rem); inset: 1rem; object-fit: contain; position: absolute; width: calc(100% - 2rem); }\n.mui-v-ProductDetail-meta { color: var(--mui-t-muted); font-size: 0.8125rem; }\n.mui-v-ProductDetail-metaRow { align-items: center; display: flex; flex-wrap: wrap; gap: var(--mui-t-s3); }\n.mui-v-ProductDetail-moreGrid { display: grid; gap: var(--mui-t-s4); }\n@media (min-width: 768px) { .mui-v-ProductDetail-moreGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n@media (min-width: 1024px) { .mui-v-ProductDetail-moreGrid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }\n.mui-v-ProductDetail-noImg { color: var(--mui-t-lineStrong); }\n.mui-v-ProductDetail-offer { background: var(--mui-t-brand); border-radius: var(--mui-t-radius); color: var(--mui-t-brandInk); display: grid; gap: var(--mui-t-s1); padding: var(--mui-t-s4); }\n.mui-v-ProductDetail-offerDesc { font-size: 0.875rem; line-height: 1.5; margin: 0; opacity: 0.9; }\n.mui-v-ProductDetail-offerEyebrow { align-items: center; display: inline-flex; font-size: 0.6875rem; font-weight: 700; gap: var(--mui-t-s2); letter-spacing: 0.12em; margin: 0; opacity: 0.85; text-transform: uppercase; }\n.mui-v-ProductDetail-offerLink { align-items: center; color: var(--mui-t-brandInk); display: inline-flex; font-weight: 700; gap: var(--mui-t-s2); min-height: var(--mui-t-tap); text-decoration: underline; text-underline-offset: 3px; }\n.mui-v-ProductDetail-offerLink:focus-visible { outline: 2px solid var(--mui-t-brandInk); outline-offset: 2px; }\n.mui-v-ProductDetail-offerName { font-size: 1.25rem; font-weight: 800; letter-spacing: -0.01em; margin: 0; }\n.mui-v-ProductDetail-offers { display: grid; gap: var(--mui-t-s2); }\n.mui-v-ProductDetail-ok { align-items: center; background: var(--mui-t-successSoft); border-radius: var(--mui-t-radius); display: flex; flex-wrap: wrap; gap: var(--mui-t-s2); padding: var(--mui-t-s2) var(--mui-t-s3); }\n.mui-v-ProductDetail-okIcon { color: var(--mui-t-success); }\n.mui-v-ProductDetail-okLink { align-items: center; color: var(--mui-t-success); display: inline-flex; font-weight: 800; gap: var(--mui-t-s1); margin-left: auto; min-height: var(--mui-t-tap); text-decoration: none; }\n.mui-v-ProductDetail-okLink:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: var(--mui-t-success); text-decoration: underline; }\n.mui-v-ProductDetail-okLink:focus-visible { outline: 2px solid var(--mui-t-success); outline-offset: 2px; }\n.mui-v-ProductDetail-okText { color: var(--mui-t-success); font-weight: 700; }\n.mui-v-ProductDetail-pickupNote { align-items: flex-start; color: var(--mui-t-muted); display: flex; font-size: 0.8125rem; gap: var(--mui-t-s2); line-height: 1.5; margin: 0; }\n.mui-v-ProductDetail-res { align-items: center; background: var(--mui-t-surface); border: 1.5px solid var(--mui-t-line); border-radius: var(--mui-t-radius); color: var(--mui-t-ink); display: inline-flex; font-weight: 700; gap: var(--mui-t-s2); min-height: 3rem; padding: 0 var(--mui-t-s4); text-decoration: none; }\n.mui-v-ProductDetail-res:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { border-color: var(--mui-t-brand); color: var(--mui-t-brand); }\n.mui-v-ProductDetail-res:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-ProductDetail-resList { display: flex; flex-wrap: wrap; gap: var(--mui-t-s3); list-style: none; margin: 0; padding: 0; }\n.mui-v-ProductDetail-secHead { border-bottom: 2px solid var(--mui-t-ink); display: grid; gap: var(--mui-t-s2); margin-bottom: var(--mui-t-s5); padding-bottom: var(--mui-t-s3); }\n.mui-v-ProductDetail-secHeadRow { align-items: end; display: flex; flex-wrap: wrap; gap: var(--mui-t-s4); justify-content: space-between; }\n.mui-v-ProductDetail-section { margin-top: var(--mui-t-s8); }\n.mui-v-ProductDetail-soldTag { background: var(--mui-t-danger); border-radius: 2px; color: #ffffff; font-size: 0.75rem; font-weight: 800; left: var(--mui-t-s3); letter-spacing: 0.12em; padding: 0.3rem 0.6rem; position: absolute; text-transform: uppercase; top: var(--mui-t-s3); }\n.mui-v-ProductDetail-specCard { background: var(--mui-t-surface); border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); padding: var(--mui-t-s4); }\n.mui-v-ProductDetail-specGrid { align-items: start; display: grid; gap: var(--mui-t-s4); }\n@media (min-width: 1024px) { .mui-v-ProductDetail-specGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n.mui-v-ProductDetail-specGroup { color: var(--mui-t-brand); font-size: 0.75rem; font-weight: 800; letter-spacing: 0.12em; margin: 0 0 var(--mui-t-s2); text-transform: uppercase; }\n.mui-v-ProductDetail-specList { margin: 0; }\n.mui-v-ProductDetail-specName { color: var(--mui-t-muted); }\n.mui-v-ProductDetail-specRow { border-top: 1px solid var(--mui-t-line); display: grid; font-size: 0.9375rem; gap: var(--mui-t-s3); grid-template-columns: 1fr 1fr; padding: var(--mui-t-s2) 0; }\n.mui-v-ProductDetail-specVal { font-variant-numeric: tabular-nums; font-weight: 700; margin: 0; text-align: right; }\n.mui-v-ProductDetail-stage { align-items: center; aspect-ratio: 1 / 1; background: #ffffff; border: 1px solid var(--mui-t-line); border-radius: var(--mui-t-radius); display: grid; justify-items: center; overflow: hidden; padding: var(--mui-t-s4); position: relative; }\n.mui-v-ProductDetail-switch { align-items: center; background: transparent; border: 0; color: var(--mui-t-ink); cursor: pointer; display: inline-flex; font: inherit; gap: var(--mui-t-s2); min-height: var(--mui-t-tap); padding: 0 var(--mui-t-s1); }\n.mui-v-ProductDetail-switch:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-ProductDetail-thumb { background: #ffffff; border: 1.5px solid var(--mui-t-line); border-radius: var(--mui-t-radius); cursor: pointer; flex-shrink: 0; height: 4.5rem; overflow: hidden; padding: 0; width: 4.5rem; }\n.mui-v-ProductDetail-thumb:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { border-color: var(--mui-t-lineStrong); }\n.mui-v-ProductDetail-thumb:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-ProductDetail-thumb--on.mui-v-ProductDetail-thumb--on.mui-v-ProductDetail-thumb--on { border-color: var(--mui-t-brand); box-shadow: inset 0 0 0 1px var(--mui-t-brand); }\n.mui-v-ProductDetail-thumbImg { display: block; height: 100%; object-fit: cover; width: 100%; }\n.mui-v-ProductDetail-thumbKnob { background: #ffffff; border-radius: 999px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); height: 1.125rem; left: 0.1875rem; position: absolute; top: 0.1875rem; transition: transform 160ms ease; width: 1.125rem; }\n@media (prefers-reduced-motion: reduce) { .mui-v-ProductDetail-thumbKnob { transition: none; } }\n.mui-v-ProductDetail-thumbKnob--on.mui-v-ProductDetail-thumbKnob--on.mui-v-ProductDetail-thumbKnob--on { transform: translateX(1.25rem); }\n.mui-v-ProductDetail-thumbs { display: flex; gap: var(--mui-t-s2); overflow-x: auto; padding-bottom: var(--mui-t-s1); }\n.mui-v-ProductDetail-title { font-size: clamp(1.875rem, 1.3rem + 2.2vw, 3rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.02; margin: 0; text-wrap: balance; }\n.mui-v-ProductDetail-top { display: grid; gap: var(--mui-t-s5); }\n@media (min-width: 1024px) { .mui-v-ProductDetail-top { gap: var(--mui-t-s7); grid-template-columns: 1.1fr 1fr; } }\n.mui-v-ProductDetail-totalRow { border-top: 2px solid var(--mui-t-ink); display: flex; font-variant-numeric: tabular-nums; justify-content: space-between; margin: 0; padding-top: var(--mui-t-s2); }\n.mui-v-ProductDetail-track { background: var(--mui-t-lineStrong); border-radius: 999px; display: inline-block; height: 1.5rem; position: relative; width: 2.75rem; }\n.mui-v-ProductDetail-track--on.mui-v-ProductDetail-track--on.mui-v-ProductDetail-track--on { background: var(--mui-t-brand); }\n.mui-v-ProductDetail-unitLabel { color: var(--mui-t-muted); font-size: 0.875rem; font-weight: 600; }\n.mui-v-ProductDetail-unitLabel--on.mui-v-ProductDetail-unitLabel--on.mui-v-ProductDetail-unitLabel--on { color: var(--mui-t-ink); font-weight: 800; }\n.mui-v-ProductPage-state { display: grid; gap: var(--mui-t-s4); justify-items: center; padding: var(--mui-t-s9) 0; text-align: center; }\n.mui-v-ProductPage-wrap { padding: var(--mui-t-s5) 0 var(--mui-t-s8); }\n.mui-v-PromoCard-arrow { transition: transform 200ms ease; }\n.mui-v-PromoCard-card:is(:hover, :focus-within) .mui-v-PromoCard-arrow { transform: translateX(4px); }\n@media (prefers-reduced-motion: reduce) { .mui-v-PromoCard-arrow { transition: none; } }\n.mui-v-PromoCard-body { display: grid; gap: var(--mui-t-s3); padding: var(--mui-t-s5); width: 100%; }\n@media (min-width: 768px) { .mui-v-PromoCard-body { padding: var(--mui-t-s6); } }\n.mui-v-PromoCard-card { align-items: flex-end; background: linear-gradient(135deg, var(--mui-t-brand), var(--mui-t-brandDeep)); border-radius: var(--mui-t-radius); box-shadow: var(--mui-t-shadowCard); color: #ffffff; display: flex; isolation: isolate; min-height: 22rem; overflow: hidden; position: relative; text-decoration: none; }\n.mui-v-PromoCard-card:focus-visible { outline: 3px solid var(--mui-t-brand); outline-offset: 3px; }\n@media (min-width: 768px) { .mui-v-PromoCard-card { min-height: 24rem; } }\n.mui-v-PromoCard-card--featured.mui-v-PromoCard-card--featured.mui-v-PromoCard-card--featured { min-height: 26rem; }\n@media (min-width: 768px) { .mui-v-PromoCard-card--featured.mui-v-PromoCard-card--featured.mui-v-PromoCard-card--featured { grid-column: 1 / -1; min-height: 28rem; } }\n.mui-v-PromoCard-chip { align-items: center; background: #ffffff; border-radius: var(--mui-t-radius); color: var(--mui-t-brandDeep); display: inline-flex; font-size: 0.8125rem; font-weight: 800; gap: 0.35rem; letter-spacing: 0.02em; padding: 0.35rem 0.6rem; }\n.mui-v-PromoCard-chipGhost { align-items: center; border: 1px solid rgba(255, 255, 255, 0.55); border-radius: var(--mui-t-radius); color: #ffffff; display: inline-flex; font-size: 0.8125rem; font-weight: 700; padding: 0.35rem 0.6rem; }\n.mui-v-PromoCard-chips { display: flex; flex-wrap: wrap; gap: var(--mui-t-s2); }\n.mui-v-PromoCard-cta { align-items: center; border-top: 1px solid rgba(255, 255, 255, 0.3); display: inline-flex; font-size: 0.9375rem; font-weight: 700; gap: var(--mui-t-s2); margin-top: var(--mui-t-s1); padding-top: var(--mui-t-s3); }\n.mui-v-PromoCard-desc { color: rgba(255, 255, 255, 0.88); font-size: 0.9375rem; line-height: 1.5; margin: 0; max-width: 38rem; }\n.mui-v-PromoCard-img { display: block; height: 100%; object-fit: cover; transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1); width: 100%; }\n.mui-v-PromoCard-card:is(:hover, :focus-within) .mui-v-PromoCard-img { transform: scale(1.04); }\n@media (prefers-reduced-motion: reduce) { .mui-v-PromoCard-img { transition: none; } }\n.mui-v-PromoCard-media { display: block; inset: 0; position: absolute; z-index: -2; }\n.mui-v-PromoCard-name { font-size: clamp(1.625rem, 1.2rem + 1.6vw, 2.25rem); font-weight: 800; letter-spacing: -0.025em; line-height: 1.02; margin: 0; text-shadow: 0 2px 18px rgba(0, 0, 0, 0.35); text-wrap: balance; }\n.mui-v-PromoCard-name--featured.mui-v-PromoCard-name--featured.mui-v-PromoCard-name--featured { font-size: clamp(2rem, 1.3rem + 3vw, 3.5rem); }\n.mui-v-PromoCard-shade { background: linear-gradient(180deg, rgba(30, 16, 6, 0.3) 0%, rgba(30, 16, 6, 0.68) 45%, rgba(30, 16, 6, 0.95) 100%); inset: 0; position: absolute; z-index: -1; }\n.mui-v-SiteFooter-address { color: #ffffff; font-style: normal; line-height: 1.6; margin-bottom: var(--mui-t-s2); }\n.mui-v-SiteFooter-blurb { font-size: 0.9375rem; line-height: 1.6; margin: var(--mui-t-s4) 0 0; max-width: 26rem; }\n.mui-v-SiteFooter-bottom { border-top: 1px solid rgba(255, 255, 255, 0.16); color: rgba(255, 255, 255, 0.72); display: flex; flex-wrap: wrap; font-size: 0.8125rem; gap: var(--mui-t-s2) var(--mui-t-s5); justify-content: space-between; padding: var(--mui-t-s4) 0 var(--mui-t-s5); }\n.mui-v-SiteFooter-brand { color: #ffffff; font-size: 1.5rem; font-weight: 800; letter-spacing: 0.02em; line-height: 1; margin: 0; text-transform: uppercase; }\n.mui-v-SiteFooter-brandSub { color: rgba(255, 255, 255, 0.7); font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.24em; margin: var(--mui-t-s2) 0 0; text-transform: uppercase; }\n.mui-v-SiteFooter-contact { display: grid; gap: var(--mui-t-s1); }\n.mui-v-SiteFooter-credit { color: #ffffff; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }\n.mui-v-SiteFooter-credit:focus-visible { outline: 2px solid #ffffff; outline-offset: 2px; }\n.mui-v-SiteFooter-foot { background: var(--mui-t-brandDeep); border-top: 4px solid var(--mui-t-steel); color: rgba(255, 255, 255, 0.86); margin-top: auto; }\n.mui-v-SiteFooter-grid { display: grid; gap: var(--mui-t-s6); padding: var(--mui-t-s7) 0 var(--mui-t-s6); }\n@media (min-width: 768px) { .mui-v-SiteFooter-grid { grid-template-columns: 1.4fr 1fr 1.2fr; } }\n.mui-v-SiteFooter-head { color: rgba(255, 255, 255, 0.65); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.16em; margin: 0 0 var(--mui-t-s3); text-transform: uppercase; }\n.mui-v-SiteFooter-link { align-items: center; color: #ffffff; display: inline-flex; font-weight: 600; gap: var(--mui-t-s2); min-height: 2.5rem; text-decoration: none; }\n.mui-v-SiteFooter-link:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { color: #ffffff; text-decoration: underline; text-underline-offset: 4px; }\n.mui-v-SiteFooter-link:focus-visible { outline: 2px solid #ffffff; outline-offset: 2px; }\n.mui-v-SiteFooter-list { display: grid; gap: var(--mui-t-s1); list-style: none; margin: 0; padding: 0; }\n.mui-v-SiteFooter-small { margin: 0; }\n.mui-v-SiteFooter-wrap { overflow-wrap: anywhere; }\n.mui-v-SiteHeader-actions { align-items: center; display: flex; gap: var(--mui-t-s2); }\n.mui-v-SiteHeader-badge { background: var(--mui-t-brand); border: 2px solid var(--mui-t-surface); border-radius: 999px; color: #ffffff; display: grid; font-size: 0.6875rem; font-variant-numeric: tabular-nums; font-weight: 800; height: 1.25rem; min-width: 1.25rem; padding: 0 0.3rem; place-items: center; position: absolute; right: -0.4rem; top: -0.4rem; }\n.mui-v-SiteHeader-bar { background: var(--mui-t-surface); border-bottom: 1px solid var(--mui-t-line); box-shadow: 0 1px 0 rgba(6, 32, 52, 0.03); flex-shrink: 0; position: relative; z-index: 20; }\n.mui-v-SiteHeader-brandLink { align-items: center; border-radius: var(--mui-t-radius); color: var(--mui-t-ink); display: inline-flex; gap: var(--mui-t-s3); margin-right: auto; min-height: var(--mui-t-tap); text-decoration: none; }\n.mui-v-SiteHeader-brandLink:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 3px; }\n.mui-v-SiteHeader-drawerLink { align-items: center; border: 1.5px solid var(--mui-t-line); border-radius: var(--mui-t-radius); color: var(--mui-t-ink); display: flex; font-size: 1.25rem; font-weight: 700; justify-content: space-between; min-height: 3.5rem; padding: 0 var(--mui-t-s4); text-decoration: none; }\n.mui-v-SiteHeader-drawerLink:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: var(--mui-t-brandTint); border-color: var(--mui-t-brand); color: var(--mui-t-ink); }\n.mui-v-SiteHeader-drawerLink:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n.mui-v-SiteHeader-drawerLink--active.mui-v-SiteHeader-drawerLink--active.mui-v-SiteHeader-drawerLink--active { background: var(--mui-t-brand); border-color: var(--mui-t-brand); color: var(--mui-t-brandInk); }\n.mui-v-SiteHeader-drawerList { display: grid; gap: var(--mui-t-s2); list-style: none; margin: 0; padding: 0; }\n.mui-v-SiteHeader-drawerNote { background: var(--mui-t-brandTint); border-left: 3px solid var(--mui-t-brand); color: var(--mui-t-ink); font-size: 0.875rem; line-height: 1.55; margin-top: auto; padding: var(--mui-t-s4); }\n.mui-v-SiteHeader-fallback { align-items: center; display: inline-flex; gap: var(--mui-t-s3); }\n.mui-v-SiteHeader-inner { align-items: center; display: flex; gap: var(--mui-t-s3); min-height: 4.25rem; }\n@media (min-width: 1024px) { .mui-v-SiteHeader-inner { gap: var(--mui-t-s5); min-height: 5rem; } }\n.mui-v-SiteHeader-layer { background: var(--mui-t-scrim); display: flex; inset: 0; justify-content: flex-end; overscroll-behavior: contain; position: fixed; z-index: 60; }\n.mui-v-SiteHeader-link { align-items: center; border: 1.5px solid transparent; border-radius: var(--mui-t-radius); color: var(--mui-t-ink); display: inline-flex; font-size: 0.9375rem; font-weight: 600; min-height: var(--mui-t-tap); padding: 0 var(--mui-t-s4); text-decoration: none; transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease; }\n.mui-v-SiteHeader-link:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: var(--mui-t-brandTint); color: var(--mui-t-brand); }\n.mui-v-SiteHeader-link:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n@media (prefers-reduced-motion: reduce) { .mui-v-SiteHeader-link { transition: none; } }\n.mui-v-SiteHeader-link--active.mui-v-SiteHeader-link--active.mui-v-SiteHeader-link--active { background: var(--mui-t-brand); border-color: var(--mui-t-brand); color: var(--mui-t-brandInk); }\n.mui-v-SiteHeader-list { align-items: center; display: flex; gap: var(--mui-t-s1); list-style: none; margin: 0; padding: 0; }\n.mui-v-SiteHeader-logo { display: block; height: 2.75rem; max-width: min(13rem, 52vw); object-fit: contain; object-position: left center; width: auto; }\n@media (min-width: 1024px) { .mui-v-SiteHeader-logo { height: 3.25rem; max-width: 16rem; } }\n.mui-v-SiteHeader-mark { background: var(--mui-t-brand); clip-path: polygon(0 0, 100% 0, 100% 72%, 72% 100%, 0 100%); color: #ffffff; display: grid; font-size: 1.25rem; font-weight: 800; height: 2.5rem; letter-spacing: -0.04em; place-items: center; width: 2.5rem; }\n.mui-v-SiteHeader-menuWrap { display: inline-flex; }\n@media (min-width: 1024px) { .mui-v-SiteHeader-menuWrap { display: none; } }\n.mui-v-SiteHeader-nav { display: none; }\n@media (min-width: 1024px) { .mui-v-SiteHeader-nav { display: block; } }\n.mui-v-SiteHeader-panel { background: var(--mui-t-surface); border-left: 4px solid var(--mui-t-brand); box-shadow: var(--mui-t-shadowLift); color: var(--mui-t-ink); display: flex; flex-direction: column; gap: var(--mui-t-s5); height: 100%; overflow-y: auto; padding: var(--mui-t-s4) var(--mui-t-s5) var(--mui-t-s6); width: min(24rem, 92vw); }\n.mui-v-SiteHeader-panelHead { align-items: center; border-bottom: 1px solid var(--mui-t-line); display: flex; justify-content: space-between; padding-bottom: var(--mui-t-s4); }\n.mui-v-SiteHeader-panelTitle { color: var(--mui-t-muted); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.16em; margin: 0; text-transform: uppercase; }\n.mui-v-SiteHeader-skip { background: var(--mui-t-ink); border-radius: var(--mui-t-radius); color: #ffffff; font-weight: 700; left: var(--mui-t-s4); padding: var(--mui-t-s3) var(--mui-t-s4); position: fixed; text-decoration: none; top: -5rem; z-index: 80; }\n.mui-v-SiteHeader-skip:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; top: var(--mui-t-s4); }\n.mui-v-SiteHeader-stripe { background: linear-gradient(90deg, var(--mui-t-brand) 0 62%, var(--mui-t-steel) 62% 100%); height: 4px; }\n.mui-v-SiteHeader-word { display: grid; line-height: 1; }\n.mui-v-SiteHeader-wordSub { color: var(--mui-t-steelInk); font-size: 0.625rem; font-weight: 600; letter-spacing: 0.24em; margin-top: 0.25rem; text-transform: uppercase; }\n.mui-v-SiteHeader-wordTop { color: var(--mui-t-brand); font-size: 1.25rem; font-weight: 800; letter-spacing: 0.02em; text-transform: uppercase; }\n.mui-v-alert { align-items: flex-start; background: var(--mui-t-dangerSoft); border: 1.5px solid var(--mui-t-danger); border-radius: var(--mui-t-radius); color: var(--mui-t-ink); display: flex; gap: var(--mui-t-s3); padding: var(--mui-t-s3) var(--mui-t-s4); }\n.mui-v-appRoot { -webkit-font-smoothing: antialiased; background: var(--mui-t-canvas); color: var(--mui-t-ink); color-scheme: light; display: flex; flex-direction: column; font-family: var(--mui-t-fontSans); font-size: 1rem; height: 100dvh; line-height: 1.5; overflow: hidden; }\n.mui-v-btn { align-items: center; border: 1.5px solid transparent; border-radius: var(--mui-t-radius); cursor: pointer; display: inline-flex; font: inherit; font-size: 0.9375rem; font-weight: 700; gap: var(--mui-t-s2); justify-content: center; letter-spacing: 0.01em; line-height: 1.1; min-height: 3rem; padding: 0 var(--mui-t-s5); text-decoration: none; transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease; white-space: nowrap; }\n.mui-v-btn:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 3px; }\n.mui-v-btn:active:not(:disabled, [aria-disabled=\"true\"]) { transform: translateY(1px); }\n.mui-v-btn:is(:disabled, [aria-disabled=\"true\"]) { cursor: not-allowed; opacity: 0.55; }\n@media (prefers-reduced-motion: reduce) { .mui-v-btn { transition: none; } }\n.mui-v-btnBlock { width: 100%; }\n.mui-v-btnLight { background: #ffffff; border-color: #ffffff; color: var(--mui-t-brandDeep); }\n.mui-v-btnLight:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: var(--mui-t-brandTint); border-color: var(--mui-t-brandTint); color: var(--mui-t-brandDeep); }\n.mui-v-btnLight:focus-visible { outline: 2px solid #ffffff; outline-offset: 3px; }\n.mui-v-btnOnDark { backdrop-filter: blur(6px); background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.7); color: #ffffff; }\n.mui-v-btnOnDark:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: #ffffff; border-color: #ffffff; color: var(--mui-t-ink); }\n.mui-v-btnOnDark:focus-visible { outline: 2px solid #ffffff; outline-offset: 3px; }\n.mui-v-btnPrimary { background: var(--mui-t-brand); border-color: var(--mui-t-brand); color: var(--mui-t-brandInk); }\n.mui-v-btnPrimary:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: var(--mui-t-brandHover); border-color: var(--mui-t-brandHover); color: var(--mui-t-brandInk); }\n.mui-v-btnSecondary { background: var(--mui-t-surface); border-color: var(--mui-t-ink); color: var(--mui-t-ink); }\n.mui-v-btnSecondary:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: var(--mui-t-ink); border-color: var(--mui-t-ink); color: var(--mui-t-surface); }\n.mui-v-container { margin: 0 auto; max-width: var(--mui-t-maxW); padding-inline: var(--mui-t-s4); width: 100%; }\n@media (min-width: 768px) { .mui-v-container { padding-inline: var(--mui-t-s6); } }\n.mui-v-eyebrow { align-items: center; color: var(--mui-t-brand); display: inline-flex; font-size: 0.75rem; font-weight: 700; gap: var(--mui-t-s2); letter-spacing: 0.14em; line-height: 1.3; margin: 0; text-transform: uppercase; }\n.mui-v-field { appearance: none; background: var(--mui-t-surface); border: 1.5px solid var(--mui-t-lineStrong); border-radius: var(--mui-t-radius); color: var(--mui-t-ink); font: inherit; font-size: 1rem; min-height: 3rem; padding: 0.65rem 0.875rem; transition: border-color 160ms ease; width: 100%; }\n.mui-v-field:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { border-color: var(--mui-t-ink); }\n.mui-v-field:focus-visible { border-color: var(--mui-t-brand); outline: 2px solid var(--mui-t-brand); outline-offset: 1px; }\n.mui-v-field:is(:disabled, [aria-disabled=\"true\"]) { background: var(--mui-t-canvas); cursor: not-allowed; }\n@media (prefers-reduced-motion: reduce) { .mui-v-field { transition: none; } }\n.mui-v-field--invalid.mui-v-field--invalid.mui-v-field--invalid { border-color: var(--mui-t-danger); box-shadow: inset 3px 0 0 var(--mui-t-danger); }\n.mui-v-h2 { font-size: clamp(1.75rem, 1.3rem + 1.8vw, 2.75rem); font-weight: 800; letter-spacing: -0.025em; line-height: 1.05; margin: 0; text-wrap: balance; }\n.mui-v-iconBtn { background: var(--mui-t-surface); border: 1.5px solid var(--mui-t-line); border-radius: var(--mui-t-radius); color: var(--mui-t-ink); cursor: pointer; display: inline-grid; flex-shrink: 0; height: var(--mui-t-tap); padding: 0; place-items: center; position: relative; text-decoration: none; transition: background-color 160ms ease, border-color 160ms ease; width: var(--mui-t-tap); }\n.mui-v-iconBtn:hover:where(:not(:disabled, [aria-disabled=\"true\"])) { background: var(--mui-t-brandTint); border-color: var(--mui-t-brand); color: var(--mui-t-ink); }\n.mui-v-iconBtn:focus-visible { outline: 2px solid var(--mui-t-brand); outline-offset: 2px; }\n@media (prefers-reduced-motion: reduce) { .mui-v-iconBtn { transition: none; } }\n.mui-v-iconLg { flex-shrink: 0; height: 1.5rem; width: 1.5rem; }\n.mui-v-iconMd { flex-shrink: 0; height: 1.25rem; width: 1.25rem; }\n.mui-v-iconSm { flex-shrink: 0; height: 1rem; width: 1rem; }\n.mui-v-lede { color: var(--mui-t-muted); font-size: 1.0625rem; line-height: 1.6; margin: 0; max-width: 40rem; }\n.mui-v-pageMain { flex: 1 0 auto; }\n.mui-v-scroller { display: flex; flex: 1; flex-direction: column; min-height: 0; outline: none; overflow-x: clip; overflow-y: auto; }\n.mui-v-srOnly { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; white-space: nowrap; width: 1px; }"]},{"children":[{"tag":"a","text":"Skip to main content","props":{"href":"#main-content","class":"mui-v-SiteHeader-skip"}},{"props":{"aria-hidden":"true","class":"mui-v-SiteHeader-stripe"},"tag":"div"},{"children":[{"children":[{"props":{"alt":{"$t":233},"src":{"$t":231},"class":"mui-v-SiteHeader-logo"},"tag":"img","when":{"$t":229}},{"children":[{"props":{"aria-hidden":"true","class":"mui-v-SiteHeader-mark"},"tag":"span","text":"G"},{"children":[{"tag":"span","text":"Garland Saw","props":{"class":"mui-v-SiteHeader-wordTop"}},{"tag":"span","text":"& Lawnmower","props":{"class":"mui-v-SiteHeader-wordSub"}}],"tag":"span","props":{"class":"mui-v-SiteHeader-word"}}],"tag":"span","when":{"$t":230},"props":{"class":"mui-v-SiteHeader-fallback"}}],"props":{"aria-label":{"$t":232},"href":"/","class":"mui-v-SiteHeader-brandLink"},"tag":"a","on":{"click":[{"call":"navigate","to":"/"}]},"$demand":[]},{"children":[{"children":[{"children":[{"props":{"aria-current":{"$t":333},"href":{"$t":302},"class":{"$t":19}},"tag":"a","text":{"$t":303},"on":{"click":[{"call":"navigate","to":"{{ item.href }}"}]},"$demand":[]}],"repeat":{"as":"item","items":{"$t":203},"key":"id"},"tag":"li"}],"tag":"ul","props":{"class":"mui-v-SiteHeader-list"}}],"props":{"aria-label":"Primary","class":"mui-v-SiteHeader-nav"},"tag":"nav"},{"children":[{"children":[{"$v":0},{"props":{"aria-hidden":"true","class":"mui-v-SiteHeader-badge"},"tag":"span","text":{"$t":54},"when":{"$t":53}}],"props":{"aria-label":{"$t":119},"href":"/cart","class":"mui-v-iconBtn"},"tag":"a","on":{"click":[{"call":"navigate","to":"/cart"}]},"$demand":[]},{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"tag":"path","props":{"d":"M4 5h16"}},{"tag":"path","props":{"d":"M4 12h16"}},{"tag":"path","props":{"d":"M4 19h16"}}]}],"on":{"click":[{"op":"set","path":"navOpen","value":true}]},"props":{"aria-controls":"site-menu","aria-expanded":{"$t":404},"aria-haspopup":"dialog","aria-label":"Open menu","type":"button","class":"mui-v-iconBtn"},"tag":"button","$demand":[]}],"tag":"span","props":{"class":"mui-v-SiteHeader-menuWrap"}}],"tag":"div","props":{"class":"mui-v-SiteHeader-actions"}}],"tag":"div","props":{"class":"mui-v-container mui-v-SiteHeader-inner"}},{"children":[{"children":[{"children":[{"props":{"id":"site-menu-title","class":"mui-v-SiteHeader-panelTitle"},"tag":"h2","text":"Menu"},{"children":[{"$v":4}],"on":{"click":[{"op":"set","path":"navOpen","value":false}]},"props":{"aria-label":"Close menu","type":"button","class":"mui-v-iconBtn"},"tag":"button","$demand":[]}],"tag":"div","props":{"class":"mui-v-SiteHeader-panelHead"}},{"children":[{"children":[{"children":[{"children":[{"tag":"span","text":{"$t":303}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":7}]}],"on":{"click":[{"op":"set","path":"navOpen","value":false},{"call":"navigate","to":"{{ item.href }}"}]},"props":{"aria-current":{"$t":333},"href":{"$t":302},"class":{"$t":18}},"tag":"a","$demand":[]}],"repeat":{"as":"item","items":{"$t":203},"key":"id"},"tag":"li"},{"children":[{"children":[{"tag":"span","text":{"$t":118}},{"$v":0}],"on":{"click":[{"op":"set","path":"navOpen","value":false},{"call":"navigate","to":"/cart"}]},"tag":"a","props":{"href":"/cart","class":{"$t":17}},"$demand":[]}],"tag":"li"}],"tag":"ul","props":{"class":"mui-v-SiteHeader-drawerList"}}],"props":{"aria-label":"Primary"},"tag":"nav"},{"tag":"p","text":"Order online, pick up at the shop. We confirm every pickup order before you head over.","props":{"class":"mui-v-SiteHeader-drawerNote"}}],"props":{"aria-labelledby":"site-menu-title","aria-modal":"true","id":"site-menu","role":"dialog","tabindex":"-1","class":"mui-v-SiteHeader-panel mui-m-drawerIn"},"tag":"section"}],"tag":"div","use":[{"action":{"op":"set","path":"navOpen","value":false},"behavior":"modalSurface","initialFocus":"[aria-current='page']","surface":"[role='dialog']"}],"when":{"$t":405},"props":{"class":"mui-v-SiteHeader-layer mui-m-scrimIn","data-mui-exit":"scrimOut"},"$demand":[]}],"tag":"header","props":{"class":"mui-v-SiteHeader-bar"}},{"children":[{"children":[{"children":[{"children":[{"children":[{"props":{"alt":"","decoding":"async","fetchpriority":"high","src":{"$t":416},"class":"mui-v-Home-bg mui-m-heroZoom"},"tag":"img"}],"props":{"aria-hidden":"true","class":"mui-v-Home-bgWrap"},"tag":"div"},{"props":{"aria-hidden":"true","class":"mui-v-Home-shade"},"tag":"div"},{"props":{"aria-hidden":"true","class":"mui-v-Home-grid mui-m-gridDrift"},"tag":"div"},{"children":[{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"tag":"path","props":{"d":"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}},{"tag":"circle","props":{"cx":"12","cy":"10","r":"3"}}]},{"tag":"span","text":"Historic downtown Garland, TX"}],"tag":"p","props":{"class":"mui-v-Home-tag mui-m-rise"}},{"children":["Sharp service for ",{"tag":"span","text":"Texas yards.","props":{"class":"mui-v-Home-titleAccent"}}],"props":{"id":"hero-title","class":"mui-v-Home-title mui-m-rise2"},"tag":"h1"},{"tag":"p","text":"Saws, mowers, trimmers and blowers from STIHL, Toro and Husqvarna, with parts and repair on Main Street. Find your machine online and pick it up at the shop.","props":{"class":"mui-v-Home-lede mui-m-rise3"}},{"children":[{"children":[{"tag":"span","text":"Shop inventory"},{"$v":8}],"tag":"a","props":{"href":"/inventory","class":"mui-v-btn mui-v-btnLight"},"on":{"click":[{"call":"navigate","to":"/inventory"}]},"$demand":[]},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"$v":11}]},{"tag":"span","text":"Book service"}],"tag":"a","props":{"href":"/contact","class":"mui-v-btn mui-v-btnOnDark"},"on":{"click":[{"call":"navigate","to":"/contact"}]},"$demand":[]}],"tag":"div","props":{"class":"mui-v-Home-ctas mui-m-rise4"}},{"children":[{"props":{"aria-hidden":"true","class":"mui-v-Home-sweepLine mui-m-sweep"},"tag":"li"},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-Home-statIcon"},"children":[{"$v":12},{"$v":13}]},{"tag":"span","text":"Saws & mowers","props":{"class":"mui-v-Home-statLabel"}}],"tag":"li","props":{"class":"mui-v-Home-stat"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-Home-statIcon"},"children":[{"$v":14},{"$v":15},{"$v":16},{"$v":17}]},{"tag":"span","text":"Parts counter","props":{"class":"mui-v-Home-statLabel"}}],"tag":"li","props":{"class":"mui-v-Home-stat"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-Home-statIcon"},"children":[{"$v":11}]},{"tag":"span","text":"Service & repair","props":{"class":"mui-v-Home-statLabel"}}],"tag":"li","props":{"class":"mui-v-Home-stat"}}],"props":{"aria-label":"What we do","class":"mui-v-Home-strip mui-m-rise4"},"tag":"ul"}],"tag":"div","props":{"class":"mui-v-Home-copy"}}],"tag":"div","props":{"class":"mui-v-container mui-v-Home-content"}}],"props":{"aria-labelledby":"hero-title","class":"mui-v-Home-hero"},"tag":"section"},{"children":[{"children":[{"children":[{"children":[{"children":[{"$v":18},{"tag":"span","text":"Current offers"}],"tag":"p","props":{"class":"mui-v-eyebrow"}},{"props":{"id":"offers-title","class":"mui-v-h2"},"tag":"h2","text":"Promotions on the lot right now"}],"tag":"div","props":{"class":"mui-v-Home-headText"}},{"children":[{"tag":"span","text":"All inventory"},{"$v":8}],"tag":"a","props":{"href":"/inventory","class":"mui-v-Home-headLink"},"on":{"click":[{"call":"navigate","to":"/inventory"}]},"$demand":[]}],"tag":"div","props":{"class":"mui-v-Home-sectionHead"}},{"children":[{"children":[{"children":[{"props":{"media":"(max-width: 767px)","sizes":"100vw","srcset":{"$t":347}},"tag":"source"},{"props":{"alt":"","loading":"lazy","sizes":{"$t":157},"src":{"$t":349},"srcset":{"$t":350},"class":"mui-v-PromoCard-img"},"tag":"img"}],"tag":"picture","when":{"$t":348},"props":{"class":"mui-v-PromoCard-media"}},{"props":{"aria-hidden":"true","class":"mui-v-PromoCard-shade"},"tag":"div"},{"children":[{"children":[{"children":[{"$v":18},{"tag":"span","text":{"$t":354}}],"tag":"span","props":{"class":"mui-v-PromoCard-chip"}},{"tag":"span","text":{"$t":115},"props":{"class":"mui-v-PromoCard-chipGhost"}}],"tag":"div","props":{"class":"mui-v-PromoCard-chips"}},{"tag":"h3","text":{"$t":353},"props":{"class":{"$t":16}}},{"tag":"p","text":{"$t":434},"when":{"$t":351},"props":{"class":"mui-v-PromoCard-desc"}},{"children":[{"tag":"span","text":{"$t":121}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm mui-v-PromoCard-arrow"},"children":[{"$v":9},{"$v":10}]}],"tag":"span","props":{"class":"mui-v-PromoCard-cta"}}],"tag":"div","props":{"class":"mui-v-PromoCard-body"}}],"props":{"aria-label":{"$t":352},"href":{"$t":112},"class":{"$t":15}},"tag":"a","on":{"click":[{"call":"navigate","to":"{{ '/inventory?promotion=' + set.promoId }}"}]},"repeat":{"as":"set","index":"i","items":{"$t":325},"key":"promoId"},"$demand":[]}],"tag":"div","props":{"class":"mui-v-Home-promoGrid"}}],"tag":"div","props":{"class":"mui-v-container"}}],"props":{"aria-labelledby":"offers-title","class":"mui-v-Home-section"},"tag":"section","when":{"$t":218}},{"children":[{"children":[{"children":[{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"tag":"rect","props":{"width":"7","height":"7","x":"3","y":"3","rx":"1"}},{"tag":"rect","props":{"width":"7","height":"7","x":"14","y":"3","rx":"1"}},{"tag":"rect","props":{"width":"7","height":"7","x":"14","y":"14","rx":"1"}},{"tag":"rect","props":{"width":"7","height":"7","x":"3","y":"14","rx":"1"}}]},{"tag":"span","text":"Shop by category"}],"tag":"p","props":{"class":"mui-v-eyebrow"}},{"props":{"id":"cats-title","class":"mui-v-h2"},"tag":"h2","text":"In stock and ready for pickup"}],"tag":"div","props":{"class":"mui-v-Home-headText"}}],"tag":"div","props":{"class":"mui-v-Home-sectionHead"}},{"children":[{"children":[{"children":[{"props":{"alt":"","height":"480","loading":"lazy","src":{"$t":76},"width":"640","class":{"$t":2}},"tag":"img","when":{"$t":74}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg mui-v-CategoryTile-placeholder"},"children":[{"$v":14},{"$v":15},{"$v":16},{"$v":17}],"when":{"$t":75}}],"tag":"div","props":{"class":{"$t":1}}},{"children":[{"tag":"span","text":{"$t":188},"props":{"class":"mui-v-CategoryTile-name"}},{"tag":"span","text":{"$t":191},"props":{"class":"mui-v-CategoryTile-count"}}],"tag":"div","props":{"class":"mui-v-CategoryTile-meta"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"tag":"path","props":{"d":"M7 7h10v10"}},{"tag":"path","props":{"d":"M7 17 17 7"}}]}],"props":{"aria-hidden":"true","class":"mui-v-CategoryTile-go"},"tag":"span"}],"tag":"a","props":{"href":{"$t":110},"class":"mui-v-CategoryTile-tile mui-m-inView"},"on":{"click":[{"call":"navigate","to":"{{ '/inventory?category=' + cat.id }}"}]},"repeat":{"as":"cat","items":{"$t":410},"key":"id"},"$demand":[]}],"tag":"div","props":{"class":"mui-v-Home-catGrid"}}],"tag":"div","props":{"class":"mui-v-container"}}],"props":{"aria-labelledby":"cats-title","class":"mui-v-Home-section mui-v-Home-sectionAlt"},"tag":"section","when":{"$t":224}},{"children":[{"children":[{"children":[{"props":{"alt":"Saw chain, files and spark plugs laid out on a repair bench","height":"1067","loading":"lazy","src":{"$t":418},"width":"1600","class":"mui-v-Home-shopPhoto"},"tag":"img"}],"tag":"div","props":{"class":"mui-v-Home-shopPhotoWrap mui-m-inView"}},{"children":[{"tag":"p","text":"Your local shop","props":{"class":"mui-v-eyebrow"}},{"props":{"id":"shop-title","class":"mui-v-h2"},"tag":"h2","text":"Family-owned in historic downtown Garland."},{"tag":"p","text":"From our shop at 133 Main Street we help homeowners and pros keep their equipment running, as an authorized STIHL, Toro and Husqvarna dealer with parts, sales and service under one roof.","props":{"class":"mui-v-lede"}},{"children":[{"children":[{"$v":19},{"tag":"span","text":"Order online, pick up on Main Street"}],"tag":"li","props":{"class":"mui-v-Home-check"}},{"children":[{"$v":19},{"tag":"span","text":"Repair and warranty work in our service shop"}],"tag":"li","props":{"class":"mui-v-Home-check"}},{"children":[{"$v":19},{"tag":"span","text":"Parts and service for all major brands"}],"tag":"li","props":{"class":"mui-v-Home-check"}}],"tag":"ul","props":{"class":"mui-v-Home-checks"}},{"children":[{"children":[{"tag":"span","text":"About the shop"},{"$v":8}],"tag":"a","props":{"href":"/contact","class":"mui-v-btn mui-v-btnPrimary"},"on":{"click":[{"call":"navigate","to":"/contact"}]},"$demand":[]},{"children":[{"$v":22},{"$v":24}],"tag":"a","when":{"$t":313},"props":{"href":{"$t":415},"class":"mui-v-btn mui-v-btnSecondary"},"on":{"click":[{"call":"navigate","to":"{{ telHref }}"}]},"$demand":[{"consumer":"root.children[3].children[0].children[0].children[3].children[0].children[1].children[4].children[1].on.click[0].to","guards":[],"expression":{"source":"telHref","writes":[],"deferred":true},"reads":[{"path":"telHref","dynamic":false}]}]}],"tag":"div","props":{"class":"mui-v-Home-ctasDark"}}],"tag":"div","props":{"class":"mui-v-Home-shopCopy"}}],"tag":"div","props":{"class":"mui-v-container mui-v-Home-shopGrid"}}],"props":{"aria-labelledby":"shop-title","class":"mui-v-Home-section"},"tag":"section"}],"tag":"div","when":{"$t":329}},{"children":[{"children":[{"children":[{"tag":"p","text":"Pickup order","props":{"class":"mui-v-eyebrow"}},{"tag":"h1","text":"Your pickup cart","props":{"class":"mui-v-PageHeader-title"}},{"tag":"p","text":"Reserve machines online and pick them up at the shop. We confirm availability and contact you before you head over — no payment is taken here.","when":{"$t":31},"props":{"class":"mui-v-lede"}}],"tag":"div","props":{"class":"mui-v-container mui-v-PageHeader-inner"}}],"tag":"header","props":{"class":"mui-v-PageHeader-band"}},{"children":[{"children":[{"children":[{"$v":25}],"tag":"span","props":{"class":"mui-v-CartPage-okIcon"}},{"tag":"h2","text":{"$t":124},"props":{"class":"mui-v-h2"}},{"tag":"p","text":{"$t":126},"props":{"class":"mui-v-lede"}},{"children":[{"children":[{"tag":"span","text":"Keep browsing"},{"$v":8}],"tag":"a","props":{"href":"/inventory","class":"mui-v-btn mui-v-btnPrimary"},"on":{"click":[{"call":"navigate","to":"/inventory"}]},"$demand":[]},{"children":[{"$v":22},{"tag":"span","text":{"$t":113}}],"tag":"a","when":{"$t":313},"props":{"href":{"$t":415},"class":"mui-v-btn mui-v-btnSecondary"},"on":{"click":[{"call":"navigate","to":"{{ telHref }}"}]},"$demand":[{"consumer":"root.children[3].children[0].children[1].children[1].children[0].children[3].children[1].on.click[0].to","guards":[],"expression":{"source":"telHref","writes":[],"deferred":true},"reads":[{"path":"telHref","dynamic":false}]}]}],"tag":"div","props":{"class":"mui-v-CartPage-row"}}],"props":{"role":"status","tabindex":"-1","class":"mui-v-CartPage-done"},"tag":"div","use":[{"behavior":"autoFocus"}],"when":{"$t":406},"$demand":[]},{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg"},"children":[{"$v":1},{"$v":2},{"$v":3}]}],"tag":"span","props":{"class":"mui-v-CartPage-emptyIcon"}},{"tag":"h2","text":"Your cart is empty","props":{"class":"mui-v-CartPage-emptyTitle"}},{"tag":"p","text":"Add a machine from inventory and send a pickup request in a minute.","props":{"class":"mui-v-lede"}},{"children":[{"tag":"span","text":"Browse inventory"},{"$v":8}],"tag":"a","props":{"href":"/inventory","class":"mui-v-btn mui-v-btnPrimary"},"on":{"click":[{"call":"navigate","to":"/inventory"}]},"$demand":[]}],"tag":"div","when":{"$t":407},"props":{"class":"mui-v-CartPage-empty"}},{"children":[{"children":[{"props":{"id":"cart-items","class":"mui-v-CartPage-colTitle"},"tag":"h2","text":{"$t":220}},{"children":[{"children":[{"children":[{"props":{"alt":"","height":"256","loading":"lazy","src":{"$t":299},"width":"256","class":"mui-v-CartPage-img"},"tag":"img","when":{"$t":298}}],"tag":"div","props":{"class":"mui-v-CartPage-thumb"}},{"children":[{"tag":"a","text":{"$t":300},"props":{"href":{"$t":107},"class":"mui-v-CartPage-name"},"on":{"click":[{"call":"navigate","to":"{{ '/inventory/' + it.id }}"}]},"$demand":[]},{"tag":"span","text":{"$t":301},"props":{"class":"mui-v-CartPage-meta"}},{"tag":"span","text":{"$t":106},"when":{"$t":296},"props":{"class":"mui-v-CartPage-meta"}}],"tag":"div","props":{"class":"mui-v-CartPage-itemText"}},{"children":[{"tag":"span","text":{"$t":103},"props":{"class":"mui-v-CartPage-price"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"tag":"path","props":{"d":"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}},{"tag":"path","props":{"d":"M3 6h18"}},{"tag":"path","props":{"d":"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}}]},{"tag":"span","text":"Remove"}],"on":{"click":[{"key":"id","op":"removeWhere","path":"cart","value":"{{ it.id }}"}]},"props":{"aria-label":{"$t":120},"disabled":{"$t":194},"type":"button","class":"mui-v-CartPage-remove"},"tag":"button","$demand":[]}],"tag":"div","props":{"class":"mui-v-CartPage-itemEnd"}}],"repeat":{"as":"it","items":{"$t":361},"key":"id"},"tag":"li","props":{"class":"mui-v-CartPage-item"}}],"props":{"aria-labelledby":"cart-items","class":"mui-v-CartPage-list"},"tag":"ul"},{"children":[{"tag":"span","text":"Estimated total before tax"},{"tag":"strong","text":{"$t":102}}],"tag":"p","props":{"class":"mui-v-CartPage-total"}}],"tag":"section"},{"children":[{"props":{"id":"checkout-title","class":"mui-v-CartPage-colTitle"},"tag":"h2","text":"Request pickup"},{"tag":"p","text":"We’ll use these details only to confirm this order.","props":{"class":"mui-v-CartPage-meta"}},{"children":[{"children":[{"children":[{"tag":"span","text":"Name for pickup"},{"$v":26}],"props":{"for":"co-name","class":"mui-v-FormField-label"},"tag":"label"},{"on":{"input":[{"op":"set","path":"checkout.name","value":"{{ event.value }}"}]},"props":{"aria-describedby":{"$t":364},"aria-invalid":{"$t":365},"autocomplete":"name","disabled":{"$t":194},"id":"co-name","maxlength":"120","type":"text","value":{"$t":369},"class":{"$t":21}},"tag":"input","$demand":[]},{"children":[{"$v":27},{"tag":"span","text":{"$t":367}}],"props":{"id":{"$t":33},"class":"mui-v-FormField-error"},"tag":"p","when":{"$t":171}}],"tag":"div","props":{"class":"mui-v-FormField-root"}},{"children":[{"children":[{"$v":30},{"$v":26}],"props":{"for":"co-email","class":"mui-v-FormField-label"},"tag":"label"},{"on":{"input":[{"op":"set","path":"checkout.email","value":"{{ event.value }}"}]},"props":{"aria-describedby":{"$t":362},"aria-invalid":{"$t":363},"autocomplete":"email","disabled":{"$t":194},"id":"co-email","inputmode":"email","type":"email","value":{"$t":368},"class":{"$t":20}},"tag":"input","$demand":[]},{"children":[{"$v":27},{"tag":"span","text":{"$t":366}}],"props":{"id":{"$t":32},"class":"mui-v-FormField-error"},"tag":"p","when":{"$t":170}}],"tag":"div","props":{"class":"mui-v-FormField-root"}},{"children":[{"children":[{"$v":31},{"$v":32}],"props":{"for":"co-phone","class":"mui-v-FormField-label"},"tag":"label"},{"on":{"input":[{"op":"set","path":"checkout.phone","value":"{{ event.value }}"}]},"props":{"autocomplete":"tel","disabled":{"$t":194},"id":"co-phone","inputmode":"tel","type":"tel","value":{"$t":370},"class":"mui-v-field"},"tag":"input","$demand":[]},{"children":[{"$v":27},{"$v":33}],"props":{"id":{"$t":34},"class":"mui-v-FormField-error"},"tag":"p","when":{"$t":29}}],"tag":"div","props":{"class":"mui-v-FormField-root"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-CartPage-alertIcon"},"children":[{"$v":20},{"$v":28},{"$v":29}]},{"children":[{"tag":"p","text":{"$t":198},"props":{"class":"mui-v-CartPage-alertTitle"}},{"tag":"p","text":{"$t":197},"props":{"class":"mui-v-CartPage-meta"}}],"tag":"div"}],"props":{"role":"alert","class":"mui-v-alert"},"tag":"div","when":{"$t":196}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-m-spinning"},"children":[{"$v":34}],"when":{"$t":194}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":35},{"$v":36}],"when":{"$t":26}},{"tag":"span","text":{"$t":192}}],"props":{"disabled":{"$t":194},"type":"submit","class":"mui-v-btn mui-v-btnPrimary mui-v-btnBlock"},"tag":"button"}],"on":{"submit":[{"op":"set","path":"checkout.attempted","value":true},{"call":"leads.create","onSuccess":[{"op":"set","path":"orderSent","value":{"count":"{{ count(state.cart) }}","name":"{{ first(words(trim(state.checkout.name))) ?? trim(state.checkout.name) }}"}},{"op":"set","path":"cart","value":[]},{"op":"set","path":"checkout","value":{"attempted":false,"email":"","name":"","phone":""}}],"value":{"addOnSelections":"{{ cartSelections }}","contact":{"email":"{{ trim(state.checkout.email) == '' ? null : trim(state.checkout.email) }}","phone":"{{ trim(state.checkout.phone) == '' ? null : trim(state.checkout.phone) }}"},"customerName":"{{ trim(state.checkout.name) }}","inventoryIds":"{{ cartIds }}"},"when":"{{ coReady && !coBusy && count(cartSelections) > 0 }}"},{"call":"leads.create","onSuccess":[{"op":"set","path":"orderSent","value":{"count":"{{ count(state.cart) }}","name":"{{ first(words(trim(state.checkout.name))) ?? trim(state.checkout.name) }}"}},{"op":"set","path":"cart","value":[]},{"op":"set","path":"checkout","value":{"attempted":false,"email":"","name":"","phone":""}}],"value":{"contact":{"email":"{{ trim(state.checkout.email) == '' ? null : trim(state.checkout.email) }}","phone":"{{ trim(state.checkout.phone) == '' ? null : trim(state.checkout.phone) }}"},"customerName":"{{ trim(state.checkout.name) }}","inventoryIds":"{{ cartIds }}"},"when":"{{ coReady && !coBusy && count(cartSelections) == 0 }}"}]},"props":{"aria-busy":{"$t":193},"aria-labelledby":"checkout-title","novalidate":true,"class":"mui-v-CartPage-form"},"tag":"form","$demand":[]}],"tag":"aside","props":{"class":"mui-v-CartPage-panel"}}],"tag":"div","when":{"$t":222},"props":{"class":"mui-v-CartPage-layout"}}],"tag":"div","props":{"class":"mui-v-container mui-v-CartPage-wrap"}}],"tag":"div","when":{"$t":327}},{"children":[{"children":[{"children":[{"tag":"p","text":"Contact & about","props":{"class":"mui-v-eyebrow"}},{"tag":"h1","text":"Talk to the shop","props":{"class":"mui-v-PageHeader-title"}},{"tag":"p","text":"Questions about a machine, a repair or a part? Send a note or call the shop and we’ll lay out clear next steps.","when":{"$t":30},"props":{"class":"mui-v-lede"}}],"tag":"div","props":{"class":"mui-v-container mui-v-PageHeader-inner"}}],"tag":"header","props":{"class":"mui-v-PageHeader-band"}},{"children":[{"children":[{"props":{"id":"ct-title","class":"mui-v-ContactPage-cardTitle"},"tag":"h2","text":"Send a message"},{"children":[{"children":[{"$v":25}],"tag":"span","props":{"class":"mui-v-ContactPage-okIcon"}},{"tag":"p","text":{"$t":123},"props":{"class":"mui-v-ContactPage-okTitle"}},{"tag":"p","text":"We reply by email, usually within one business day.","props":{"class":"mui-v-lede"}},{"on":{"click":[{"op":"set","path":"contactSent","value":""}]},"props":{"type":"button","class":"mui-v-btn mui-v-btnSecondary"},"tag":"button","text":"Send another message","$demand":[]}],"props":{"role":"status","tabindex":"-1","class":"mui-v-ContactPage-ok"},"tag":"div","use":[{"behavior":"autoFocus"}],"when":{"$t":383},"$demand":[]},{"children":[{"children":[{"children":[{"children":[{"tag":"span","text":"Name"},{"$v":26}],"props":{"for":"ct-name","class":"mui-v-FormField-label"},"tag":"label"},{"on":{"input":[{"op":"set","path":"contactForm.name","value":"{{ event.value }}"}]},"props":{"aria-invalid":{"$t":373},"autocomplete":"name","disabled":{"$t":259},"id":"ct-name","type":"text","value":{"$t":379},"class":{"$t":24}},"tag":"input","$demand":[]},{"children":[{"$v":27},{"tag":"span","text":{"$t":376}}],"props":{"id":{"$t":37},"class":"mui-v-FormField-error"},"tag":"p","when":{"$t":174}}],"tag":"div","props":{"class":"mui-v-FormField-root"}},{"children":[{"children":[{"$v":31},{"$v":32}],"props":{"for":"ct-phone","class":"mui-v-FormField-label"},"tag":"label"},{"on":{"input":[{"op":"set","path":"contactForm.phone","value":"{{ event.value }}"}]},"props":{"autocomplete":"tel","disabled":{"$t":259},"id":"ct-phone","inputmode":"tel","type":"tel","value":{"$t":380},"class":"mui-v-field"},"tag":"input","$demand":[]},{"children":[{"$v":27},{"$v":33}],"props":{"id":{"$t":38},"class":"mui-v-FormField-error"},"tag":"p","when":{"$t":29}}],"tag":"div","props":{"class":"mui-v-FormField-root"}}],"tag":"div","props":{"class":"mui-v-ContactPage-pair"}},{"children":[{"children":[{"$v":30},{"$v":26}],"props":{"for":"ct-email","class":"mui-v-FormField-label"},"tag":"label"},{"on":{"input":[{"op":"set","path":"contactForm.email","value":"{{ event.value }}"}]},"props":{"aria-invalid":{"$t":371},"autocomplete":"email","disabled":{"$t":259},"id":"ct-email","inputmode":"email","type":"email","value":{"$t":377},"class":{"$t":22}},"tag":"input","$demand":[]},{"children":[{"$v":27},{"tag":"span","text":{"$t":374}}],"props":{"id":{"$t":35},"class":"mui-v-FormField-error"},"tag":"p","when":{"$t":172}}],"tag":"div","props":{"class":"mui-v-FormField-root"}},{"children":[{"children":[{"tag":"span","text":"What’s it about?"},{"$v":26}],"props":{"for":"ct-topic","class":"mui-v-FormField-label"},"tag":"label"},{"children":[{"children":[{"props":{"selected":{"$t":381},"value":{"$t":412}},"repeat":{"as":"t","items":{"$t":202},"key":"id"},"tag":"option","text":{"$t":413}}],"on":{"change":[{"op":"set","path":"contactForm.topic","value":"{{ event.value }}"}]},"props":{"disabled":{"$t":259},"id":"ct-topic","value":{"$t":382},"class":"mui-v-field mui-v-ContactPage-select"},"tag":"select","$demand":[]},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-ContactPage-chev"},"children":[{"$v":37}]}],"tag":"div","props":{"class":"mui-v-ContactPage-selectWrap"}},{"children":[{"$v":27},{"$v":33}],"props":{"id":{"$t":39},"class":"mui-v-FormField-error"},"tag":"p","when":{"$t":29}}],"tag":"div","props":{"class":"mui-v-FormField-root"}},{"children":[{"children":[{"tag":"span","text":"Message"},{"$v":26}],"props":{"for":"ct-msg","class":"mui-v-FormField-label"},"tag":"label"},{"on":{"input":[{"op":"set","path":"contactForm.message","value":"{{ event.value }}"}]},"props":{"aria-invalid":{"$t":372},"disabled":{"$t":259},"id":"ct-msg","maxlength":"2000","rows":"5","value":{"$t":378},"class":{"$t":23}},"tag":"textarea","$demand":[]},{"children":[{"$v":27},{"tag":"span","text":{"$t":375}}],"props":{"id":{"$t":36},"class":"mui-v-FormField-error"},"tag":"p","when":{"$t":173}}],"tag":"div","props":{"class":"mui-v-FormField-root"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":20},{"$v":28},{"$v":29}]},{"children":[{"tag":"p","text":{"$t":228},"props":{"class":"mui-v-ContactPage-alertTitle"}},{"tag":"p","text":{"$t":227},"props":{"class":"mui-v-ContactPage-small"}}],"tag":"div"}],"props":{"role":"alert","class":"mui-v-alert"},"tag":"div","when":{"$t":226}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-m-spinning"},"children":[{"$v":34}],"when":{"$t":259}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":35},{"$v":36}],"when":{"$t":27}},{"tag":"span","text":{"$t":257}}],"props":{"disabled":{"$t":259},"type":"submit","class":"mui-v-btn mui-v-btnPrimary mui-v-btnBlock"},"tag":"button"}],"on":{"submit":[{"op":"set","path":"contactForm.attempted","value":true},{"call":"contact.create","onSuccess":[{"op":"set","path":"contactSent","value":"{{ first(words(trim(state.contactForm.name))) ?? 'friend' }}"},{"op":"set","path":"contactForm","value":{"attempted":false,"email":"","message":"","name":"","phone":"","topic":"sales"}}],"value":{"email":"{{ trim(state.contactForm.email) }}","message":"{{ trim(state.contactForm.message) }}","name":"{{ trim(state.contactForm.name) }}","phone":"{{ trim(state.contactForm.phone) }}","topic":"{{ lookup(state.contactForm.topic, constants.contactTopicLabels, 'Other') }}"},"when":"{{ ctNameErr == '' && ctEmailErr == '' && ctMsgErr == '' && !fx.contact.busy }}"}]},"props":{"aria-busy":{"$t":258},"aria-labelledby":"ct-title","novalidate":true,"class":"mui-v-ContactPage-form"},"tag":"form","when":{"$t":384},"$demand":[]}],"tag":"section","props":{"class":"mui-v-ContactPage-card"}},{"children":[{"children":[{"props":{"alt":"Tools hung on a pegboard above a repair bench","height":"1067","loading":"lazy","src":{"$t":417},"width":"1600","class":"mui-v-ContactPage-photo"},"tag":"img"},{"children":[{"tag":"h2","text":"Visit the shop","props":{"class":"mui-v-ContactPage-cardTitle"}},{"children":[{"$v":38},{"tag":"br"},{"$v":39}],"tag":"address","when":{"$t":304},"props":{"class":"mui-v-ContactPage-address"}},{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":23}]},{"$v":24}],"tag":"a","when":{"$t":313},"props":{"href":{"$t":415},"class":"mui-v-btn mui-v-btnPrimary"},"on":{"click":[{"call":"navigate","to":"{{ telHref }}"}]},"$demand":[{"consumer":"root.children[3].children[0].children[2].children[1].children[1].children[0].children[1].children[2].children[0].on.click[0].to","guards":[],"expression":{"source":"telHref","writes":[],"deferred":true},"reads":[{"path":"telHref","dynamic":false}]}]},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":40}]},{"$v":41},{"$v":42}],"props":{"rel":"noopener","target":"_blank","href":{"$t":234},"class":"mui-v-btn mui-v-btnSecondary"},"tag":"a","when":{"$t":312}}],"tag":"div","props":{"class":"mui-v-ContactPage-actions"}},{"children":[{"$v":43},{"tag":"span","text":{"$t":311}}],"tag":"a","when":{"$t":310},"props":{"href":{"$t":129},"class":"mui-v-ContactPage-mail"},"on":{"click":[{"call":"navigate","to":"{{ 'mailto:' + locEmail }}"}]},"$demand":[{"consumer":"root.children[3].children[0].children[2].children[1].children[1].children[0].children[1].children[3].on.click[0].to","guards":[],"expression":{"source":"'mailto:' + locEmail","writes":[],"deferred":true},"reads":[{"path":"locEmail","dynamic":false}]}]}],"tag":"div","props":{"class":"mui-v-ContactPage-infoBody"}}],"tag":"div","props":{"class":"mui-v-ContactPage-info"}}],"tag":"aside"}],"tag":"div","props":{"class":"mui-v-container mui-v-ContactPage-grid"}},{"children":[{"children":[{"children":[{"tag":"p","text":"About us","props":{"class":"mui-v-eyebrow"}},{"props":{"id":"about-title","class":"mui-v-h2"},"tag":"h2","text":"A family-owned shop in historic downtown Garland."}],"tag":"div","props":{"class":"mui-v-ContactPage-aboutHead"}},{"children":[{"tag":"p","text":"Garland Saw & Lawnmower has been servicing outdoor power equipment from 133 Main Street in historic downtown Garland for decades. We’re a family-owned dealer for STIHL and Toro, and an authorized Husqvarna store.","props":{"class":"mui-v-ContactPage-aboutText"}},{"tag":"p","text":"Whether you’re a homeowner keeping up a yard or a pro running a crew, we offer parts, sales and service on just about all major brands, including repair and warranty work, and we’ll give you a straight answer on what your equipment needs.","props":{"class":"mui-v-ContactPage-aboutText"}}],"tag":"div","props":{"class":"mui-v-ContactPage-aboutBody"}},{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg mui-v-ContactPage-pillarIcon"},"children":[{"tag":"path","props":{"d":"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}},{"tag":"path","props":{"d":"M16 3.128a4 4 0 0 1 0 7.744"}},{"tag":"path","props":{"d":"M22 21v-2a4 4 0 0 0-3-3.87"}},{"tag":"circle","props":{"cx":"9","cy":"7","r":"4"}}]},{"tag":"h3","text":"Who we serve","props":{"class":"mui-v-ContactPage-pillarTitle"}},{"tag":"p","text":"Homeowners, landscapers and professional crews across Garland and the area.","props":{"class":"mui-v-ContactPage-small"}}],"tag":"li","props":{"class":"mui-v-ContactPage-pillar"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg mui-v-ContactPage-pillarIcon"},"children":[{"$v":12},{"$v":13}]},{"tag":"h3","text":"What we carry","props":{"class":"mui-v-ContactPage-pillarTitle"}},{"tag":"p","text":"STIHL, Toro and Husqvarna saws, mowers, trimmers, blowers and parts.","props":{"class":"mui-v-ContactPage-small"}}],"tag":"li","props":{"class":"mui-v-ContactPage-pillar"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg mui-v-ContactPage-pillarIcon"},"children":[{"$v":11}]},{"tag":"h3","text":"How we help","props":{"class":"mui-v-ContactPage-pillarTitle"}},{"tag":"p","text":"Small-engine repair, warranty work and service on all major brands.","props":{"class":"mui-v-ContactPage-small"}}],"tag":"li","props":{"class":"mui-v-ContactPage-pillar"}}],"tag":"ul","props":{"class":"mui-v-ContactPage-pillars"}}],"tag":"div","props":{"class":"mui-v-container mui-v-ContactPage-about"}}],"props":{"aria-labelledby":"about-title","class":"mui-v-ContactPage-aboutBand"},"tag":"section"}],"tag":"div","when":{"$t":328}},{"children":[{"children":[{"props":{"media":"(max-width: 767px)","sizes":"100vw","srcset":{"$t":66}},"tag":"source"},{"props":{"alt":{"$t":79},"sizes":"100vw","src":{"$t":73},"srcset":{"$t":47},"class":"mui-v-InventoryPage-bannerImg"},"tag":"img"}],"tag":"picture","when":{"$t":163},"props":{"class":"mui-v-InventoryPage-bannerPic"}},{"children":[{"children":[{"children":[{"children":[{"$v":18},{"tag":"span","text":{"$t":114}}],"tag":"p","props":{"class":"mui-v-InventoryPage-bannerEyebrow"}},{"tag":"h1","text":{"$t":78},"props":{"class":"mui-v-InventoryPage-bannerTitle"}},{"tag":"p","text":{"$t":93},"when":{"$t":92},"props":{"class":"mui-v-InventoryPage-bannerDesc"}}],"tag":"div","props":{"class":"mui-v-InventoryPage-bannerText"}},{"children":[{"$v":44},{"tag":"span","text":"See all inventory"}],"tag":"a","props":{"href":"/inventory","class":"mui-v-btn mui-v-btnLight"},"on":{"click":[{"call":"navigate","to":"/inventory"}]},"$demand":[]}],"tag":"div","props":{"class":"mui-v-container mui-v-InventoryPage-bannerBar"}}],"props":{"aria-label":"Promotion","class":"mui-v-InventoryPage-banner"},"tag":"section","when":{"$t":164}},{"children":[{"children":[{"tag":"p","text":"Inventory","props":{"class":"mui-v-eyebrow"}},{"tag":"h1","text":{"$t":60},"props":{"class":"mui-v-PageHeader-title"}},{"tag":"p","text":{"$t":61},"when":{"$t":132},"props":{"class":"mui-v-lede"}}],"tag":"div","props":{"class":"mui-v-container mui-v-PageHeader-inner"}}],"tag":"header","when":{"$t":167},"props":{"class":"mui-v-PageHeader-band"}},{"children":[{"children":[{"children":[{"props":{"for":"inv-search","class":"mui-v-InventoryPage-label"},"tag":"label","text":"Search"},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-InventoryPage-searchIcon"},"children":[{"$v":45},{"$v":46}]},{"on":{"input":[{"op":"set","path":"invQuery","value":"{{ event.value }}"}]},"props":{"autocomplete":"off","id":"inv-search","placeholder":"Model or name","type":"search","value":{"$t":395},"class":"mui-v-InventoryPage-control","style":"--mui-v-InventoryPage-control-pad-end: 0.875rem; --mui-v-InventoryPage-control-pad-start: 2.6rem"},"tag":"input","$demand":[]}],"tag":"div","props":{"class":"mui-v-InventoryPage-searchWrap"}}],"tag":"div","props":{"class":"mui-v-InventoryPage-field mui-v-InventoryPage-fieldWide"}},{"children":[{"props":{"for":"inv-cat","class":"mui-v-InventoryPage-label"},"tag":"label","text":"Category"},{"children":[{"children":[{"props":{"selected":{"$t":161},"value":""},"tag":"option","text":"All categories"},{"props":{"selected":{"$t":162},"value":{"$t":184}},"repeat":{"as":"c","items":{"$t":410},"key":"id"},"tag":"option","text":{"$t":185}}],"on":{"change":[{"call":"navigate","query":{"category":"{{ event.value == '' ? null : event.value }}"},"replace":true}]},"props":{"id":"inv-cat","value":{"$t":332},"class":"mui-v-InventoryPage-control","style":"--mui-v-InventoryPage-control-pad-end: 2.5rem; --mui-v-InventoryPage-control-pad-start: 0.875rem"},"tag":"select","$demand":[]},{"$v":47}],"tag":"div","props":{"class":"mui-v-InventoryPage-selectWrap"}}],"tag":"div","props":{"class":"mui-v-InventoryPage-field"}},{"children":[{"props":{"for":"inv-sort","class":"mui-v-InventoryPage-label"},"tag":"label","text":"Sort"},{"children":[{"children":[{"props":{"selected":{"$t":396},"value":"newest"},"tag":"option","text":"Newest"},{"props":{"selected":{"$t":399},"value":"priceLow"},"tag":"option","text":"Price: low to high"},{"props":{"selected":{"$t":397},"value":"priceHigh"},"tag":"option","text":"Price: high to low"}],"on":{"change":[{"op":"set","path":"invSort","value":"{{ event.value }}"}]},"props":{"id":"inv-sort","value":{"$t":400},"class":"mui-v-InventoryPage-control","style":"--mui-v-InventoryPage-control-pad-end: 2.5rem; --mui-v-InventoryPage-control-pad-start: 0.875rem"},"tag":"select","$demand":[]},{"$v":47}],"tag":"div","props":{"class":"mui-v-InventoryPage-selectWrap"}}],"tag":"div","props":{"class":"mui-v-InventoryPage-field"}},{"children":[{"props":{"id":"cond-label","class":"mui-v-InventoryPage-label"},"tag":"span","text":"Condition"},{"children":[{"on":{"click":[{"op":"set","path":"invCondition","value":"{{ f.id }}"}]},"props":{"aria-pressed":{"$t":394},"type":"button","class":{"$t":3}},"repeat":{"as":"f","items":{"$t":201},"key":"id"},"tag":"button","text":{"$t":239},"$demand":[]}],"props":{"aria-labelledby":"cond-label","role":"group","class":"mui-v-InventoryPage-segs"},"tag":"div"}],"tag":"div","props":{"class":"mui-v-InventoryPage-field"}}],"props":{"aria-label":"Filter inventory","role":"search","class":"mui-v-InventoryPage-toolbar"},"tag":"div"},{"children":[{"props":{"aria-live":"polite","role":"status","class":"mui-v-InventoryPage-count"},"tag":"p","text":{"$t":81}},{"children":[{"$v":44},{"tag":"span","text":"Clear filters"}],"on":{"click":[{"op":"set","path":"invQuery","value":""},{"op":"set","path":"invCondition","value":"all"},{"call":"navigate","query":{"category":null},"replace":true}]},"props":{"type":"button","class":"mui-v-InventoryPage-clear"},"tag":"button","when":{"$t":65},"$demand":[]}],"tag":"div","props":{"class":"mui-v-InventoryPage-meta"}},{"children":[{"children":[{"children":[{"$v":48}],"tag":"span","props":{"class":"mui-v-InventoryPage-emptyIcon"}},{"tag":"h2","text":{"$t":323},"props":{"class":"mui-v-InventoryPage-emptyTitle"}},{"$v":49},{"$v":50}],"fallback":true,"props":{"role":"alert","class":"mui-v-InventoryPage-empty"},"tag":"div"},{"children":[{"props":{"aria-hidden":"true","class":"mui-v-InventoryPage-skel"},"repeat":{"as":"n","items":{"$t":204},"key":true},"tag":"div"}],"props":{"aria-hidden":"true","class":"mui-v-InventoryPage-grid"},"tag":"div","when":{"$t":82}},{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg"},"children":[{"$v":45},{"$v":46}]}],"tag":"span","props":{"class":"mui-v-InventoryPage-emptyIcon"}},{"tag":"h2","text":{"$t":217},"props":{"class":"mui-v-InventoryPage-emptyTitle"}},{"tag":"p","text":{"$t":216},"props":{"class":"mui-v-lede"}},{"children":[{"tag":"span","text":"Contact the shop"},{"$v":8}],"tag":"a","props":{"href":"/contact","class":"mui-v-btn mui-v-btnPrimary"},"on":{"click":[{"call":"navigate","to":"/contact"}]},"$demand":[]}],"tag":"div","when":{"$t":25},"props":{"class":"mui-v-InventoryPage-empty"}},{"children":[{"children":[{"$v":51},{"$v":55}],"tag":"article","repeat":{"as":"row","items":{"$t":48},"key":"id"},"props":{"class":"mui-v-InventoryCard-card mui-m-inView"}}],"tag":"div","when":{"$t":94},"props":{"class":"mui-v-InventoryPage-grid"}}],"tag":"div","$region":["inventory"]}],"tag":"div","props":{"class":"mui-v-container mui-v-InventoryPage-wrap mui-v-InventoryPage-cover"}}],"tag":"div","when":{"$t":330}},{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg mui-m-spinning"},"children":[{"$v":34}]},{"props":{"role":"status","class":"mui-v-lede"},"tag":"p","text":"Loading equipment details…"}],"tag":"div","when":{"$t":82},"props":{"class":"mui-v-ProductPage-state"}},{"children":[{"tag":"h1","text":"That listing isn’t available","props":{"class":"mui-v-h2"}},{"tag":"p","text":"It may have sold or been taken down. Browse what’s on the lot now.","props":{"class":"mui-v-lede"}},{"children":[{"tag":"span","text":"Back to inventory"},{"$v":8}],"tag":"a","props":{"href":"/inventory","class":"mui-v-btn mui-v-btnPrimary"},"on":{"click":[{"call":"navigate","to":"/inventory"}]},"$demand":[]}],"tag":"div","when":{"$t":59},"props":{"class":"mui-v-ProductPage-state"}},{"children":[{"children":[{"$v":48},{"tag":"h1","text":{"$t":323},"props":{"class":"mui-v-h2"}},{"$v":49},{"$v":50}],"fallback":true,"props":{"role":"alert","class":"mui-v-ProductPage-state"},"tag":"div"},{"children":[{"key":{"$t":127},"props":{"hidden":""},"tag":"span","use":[{"action":{"op":"set","path":"viewingCatalog","value":"{{ (findBy(invRows, 'id', route.params.id)).wholegood.catalogId }}"},"behavior":"delay","ms":0}],"$demand":[{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[0].use.action.value","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).wholegood.catalogId","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]}]},{"children":[{"children":[{"tag":"a","text":"Inventory","props":{"href":"/inventory","class":"mui-v-ProductDetail-crumbLink"},"on":{"click":[{"call":"navigate","to":"/inventory"}]},"$demand":[]}],"tag":"li"},{"children":[{"$v":61}],"props":{"aria-hidden":"true"},"tag":"li"},{"children":[{"tag":"a","text":{"$t":90},"props":{"href":{"$t":109},"class":"mui-v-ProductDetail-crumbLink"},"on":{"click":[{"call":"navigate","to":"{{ '/inventory?category=' + (findBy(invRows, 'id', route.params.id)).wholegood.categoryId }}"}]},"$demand":[{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[1].children[2].children[0].on.click[0].to","guards":[],"expression":{"source":"'/inventory?category=' + (findBy(invRows, 'id', route.params.id)).wholegood.categoryId","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]}]}],"tag":"li","when":{"$t":89}},{"children":[{"$v":61}],"props":{"aria-hidden":"true"},"tag":"li","when":{"$t":89}},{"props":{"aria-current":"page","class":"mui-v-ProductDetail-crumbHere"},"tag":"li","text":{"$t":150}}],"props":{"aria-label":"Breadcrumb","class":"mui-v-ProductDetail-crumbs"},"tag":"ol"},{"children":[{"children":[{"children":[{"props":{"alt":{"$t":150},"height":"1200","src":{"$t":87},"width":"1600","class":"mui-v-ProductDetail-mainImg"},"tag":"img","when":{"$t":83}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg mui-v-ProductDetail-noImg"},"children":[{"$v":52},{"$v":53},{"$v":54}],"when":{"$t":85}},{"tag":"span","text":"Sold","when":{"$t":41},"props":{"class":"mui-v-ProductDetail-soldTag"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-stage"}},{"children":[{"children":[{"props":{"alt":"","height":"128","loading":"lazy","src":{"$t":46},"width":"128","class":"mui-v-ProductDetail-thumbImg"},"tag":"img"}],"on":{"click":[{"op":"set","path":"$inst.ProductDetail__u0[\"_\"].active","value":""}]},"props":{"aria-label":"Show main photo","aria-pressed":{"$t":84},"type":"button","class":{"$t":9}},"tag":"button","when":{"$t":70},"$demand":[]},{"children":[{"props":{"alt":"","height":"128","loading":"lazy","src":{"$t":318},"width":"128","class":"mui-v-ProductDetail-thumbImg"},"tag":"img"}],"on":{"click":[{"op":"set","path":"$inst.ProductDetail__u0[\"_\"].active","value":"{{ (findBy(invRows, 'id', route.params.id)).id + '|' + m.mediaFile.urls.page }}"}]},"props":{"aria-label":{"$t":122},"aria-pressed":{"$t":86},"type":"button","class":{"$t":10}},"repeat":{"as":"m","index":"mi","items":{"$t":77}},"tag":"button","$demand":[{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[0].children[1].children[1].on.click[0].value","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).id + '|' + m.mediaFile.urls.page","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]}]}],"tag":"div","when":{"$t":214},"props":{"class":"mui-v-ProductDetail-thumbs"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-gallery"}},{"children":[{"children":[{"tag":"span","text":{"$t":314},"props":{"class":"mui-v-ProductDetail-cond"}},{"tag":"span","text":{"$t":154},"props":{"class":"mui-v-ProductDetail-meta"}},{"tag":"span","text":{"$t":419},"when":{"$t":146},"props":{"class":"mui-v-ProductDetail-meta"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-metaRow"}},{"tag":"h1","text":{"$t":150},"props":{"class":"mui-v-ProductDetail-title"}},{"tag":"p","text":{"$t":63},"when":{"$t":62},"props":{"class":"mui-v-lede"}},{"children":[{"children":[{"children":[{"$v":18},{"tag":"span","text":{"$t":117}}],"tag":"p","props":{"class":"mui-v-ProductDetail-offerEyebrow"}},{"tag":"p","text":{"$t":284},"props":{"class":"mui-v-ProductDetail-offerName"}},{"tag":"p","text":{"$t":283},"props":{"class":"mui-v-ProductDetail-offerDesc"}},{"children":[{"tag":"span","text":"See every machine with this offer"},{"$v":8}],"tag":"a","props":{"href":{"$t":111},"class":"mui-v-ProductDetail-offerLink"},"on":{"click":[{"call":"navigate","to":"{{ '/inventory?promotion=' + pid }}"}]},"$demand":[]}],"repeat":{"as":"pid","items":{"$t":64},"key":true},"tag":"div","props":{"class":"mui-v-ProductDetail-offer"}}],"tag":"div","when":{"$t":215},"props":{"class":"mui-v-ProductDetail-offers"}},{"children":[{"children":[{"children":[{"tag":"span","text":{"$t":43},"props":{"class":"mui-v-PriceBlock-label"}},{"tag":"span","text":{"$t":96},"props":{"class":{"$t":7}}}],"tag":"div","props":{"class":"mui-v-PriceBlock-cell"}},{"children":[{"$v":56},{"tag":"span","text":{"$t":95},"props":{"class":{"$t":5}}}],"tag":"div","when":{"$t":44},"props":{"class":"mui-v-PriceBlock-cell"}}],"tag":"div","props":{"class":"mui-v-PriceBlock-prices"}},{"children":[{"children":[{"tag":"span","text":{"$t":98},"props":{"class":"mui-v-PriceBlock-pay"}},{"$v":57},{"tag":"span","text":{"$t":254},"props":{"class":"mui-v-PriceBlock-terms"}}],"tag":"span","props":{"class":"mui-v-PriceBlock-payText"}},{"children":[{"$v":58}],"on":{"click":[{"op":"set","path":"disclosure","value":{"applyUrl":"{{ (findBy(invRows, 'id', route.params.id)).finance.applyUrl ?? '' }}","apr":"{{ (findBy(invRows, 'id', route.params.id)).finance.apr }}","disclosure":"{{ (findBy(invRows, 'id', route.params.id)).finance.disclosure }}","name":"{{ (findBy(invRows, 'id', route.params.id)).finance.name }}","payment":"{{ (findBy(invRows, 'id', route.params.id)).finance.payment }}","termMonths":"{{ (findBy(invRows, 'id', route.params.id)).finance.termMonths }}","title":"{{ (findBy(invRows, 'id', route.params.id)).name }}"}}]},"props":{"aria-haspopup":"dialog","aria-label":"Financing disclosure","type":"button","class":"mui-v-PriceBlock-info"},"tag":"button","$demand":[{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[4].children[1].children[1].on.click[0].value.applyUrl","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).finance.applyUrl ?? ''","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[4].children[1].children[1].on.click[0].value.apr","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).finance.apr","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[4].children[1].children[1].on.click[0].value.disclosure","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).finance.disclosure","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[4].children[1].children[1].on.click[0].value.name","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).finance.name","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[4].children[1].children[1].on.click[0].value.payment","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).finance.payment","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[4].children[1].children[1].on.click[0].value.termMonths","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).finance.termMonths","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[4].children[1].children[1].on.click[0].value.title","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).name","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]}]}],"tag":"div","when":{"$t":139},"props":{"class":"mui-v-PriceBlock-payRow"}}],"tag":"div","props":{"class":"mui-v-PriceBlock-root"}},{"children":[{"children":[{"tag":"span","text":{"$t":176}},{"tag":"span","text":{"$t":134},"props":{"class":"mui-v-ProductDetail-adjAmt"}}],"repeat":{"as":"adj","index":"ai","items":{"$t":91}},"tag":"li","props":{"class":"mui-v-ProductDetail-adj"}},{"tag":"li","text":"Already included in the price above.","props":{"class":"mui-v-ProductDetail-adjNote"}}],"tag":"ul","when":{"$t":213},"props":{"class":"mui-v-ProductDetail-adjs"}},{"children":[{"tag":"legend","text":"Add-ons","props":{"class":"mui-v-ProductDetail-legend"}},{"tag":"p","text":"Priced separately from the machine. Choose any to include with your pickup order.","props":{"class":"mui-v-ProductDetail-hint"}},{"children":[{"on":{"change":[{"op":"set","path":"addOnPick","value":{"ids":[],"inventoryId":"{{ (findBy(invRows, 'id', route.params.id)).id }}"},"when":"{{ state.addOnPick.inventoryId != (findBy(invRows, 'id', route.params.id)).id }}"},{"op":"toggleInList","path":"addOnPick.ids","value":"{{ ao.id }}"}]},"props":{"checked":{"$t":295},"disabled":{"$t":41},"type":"checkbox","class":"mui-v-ProductDetail-check"},"tag":"input","$demand":[{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[6].children[2].children[0].on.change[0].when","guards":[],"expression":{"source":"state.addOnPick.inventoryId != (findBy(invRows, 'id', route.params.id)).id","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false},{"path":"state.addOnPick.inventoryId","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[6].children[2].children[0].on.change[0].value.inventoryId","guards":[{"source":"state.addOnPick.inventoryId != (findBy(invRows, 'id', route.params.id)).id","writes":[],"deferred":true,"truthy":true}],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).id","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]}]},{"props":{"alt":"","height":"128","loading":"lazy","src":{"$t":179},"width":"128","class":"mui-v-ProductDetail-aoImg"},"tag":"img","when":{"$t":178}},{"children":[{"tag":"span","text":{"$t":180},"props":{"class":"mui-v-ProductDetail-aoName"}},{"tag":"span","text":{"$t":183},"props":{"class":"mui-v-ProductDetail-meta"}}],"tag":"span","props":{"class":"mui-v-ProductDetail-aoText"}},{"children":[{"tag":"span","text":{"$t":182},"props":{"class":"mui-v-ProductDetail-aoPrice"}},{"tag":"span","text":{"$t":101},"when":{"$t":181},"props":{"class":"mui-v-ProductDetail-meta"}}],"tag":"span","props":{"class":"mui-v-ProductDetail-aoPriceCol"}}],"repeat":{"as":"ao","items":{"$t":72},"key":"id"},"tag":"label","props":{"class":{"$t":8}}}],"tag":"fieldset","when":{"$t":212},"props":{"class":"mui-v-ProductDetail-addOns"}},{"children":[{"children":[{"tag":"span","text":{"$t":116}},{"tag":"strong","text":{"$t":97}}],"tag":"p","when":{"$t":206},"props":{"class":"mui-v-ProductDetail-totalRow"}},{"children":[{"$v":0},{"tag":"span","text":{"$t":40}}],"on":{"click":[{"key":"id","op":"upsert","path":"cart","value":{"addOnCount":"{{ count($36b1e3e5$pickIds) }}","addOnTotal":"{{ $67caf199$addOnTotal }}","hasAddOns":"{{ count($36b1e3e5$pickIds) > 0 }}","id":"{{ (findBy(invRows, 'id', route.params.id)).id }}","img":"{{ $3fd7463d$mainThumb }}","name":"{{ (findBy(invRows, 'id', route.params.id)).name }}","price":"{{ (findBy(invRows, 'id', route.params.id)).price }}","selection":{"addOnIds":"{{ $36b1e3e5$pickIds }}","inventoryId":"{{ (findBy(invRows, 'id', route.params.id)).id }}"},"stock":"{{ (findBy(invRows, 'id', route.params.id)).stockNumber ?? (findBy(invRows, 'id', route.params.id)).wholegood.sku }}"}},{"op":"set","path":"lastAdded","value":"{{ (findBy(invRows, 'id', route.params.id)).id }}"}]},"props":{"disabled":{"$t":41},"type":"button","class":"mui-v-btn mui-v-btnPrimary mui-v-btnBlock mui-v-ProductDetail-cta"},"tag":"button","$demand":[{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.addOnCount","guards":[],"expression":{"source":"count($36b1e3e5$pickIds)","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false},{"path":"state.addOnPick.ids","dynamic":false},{"path":"state.addOnPick.inventoryId","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.addOnTotal","guards":[],"expression":{"source":"$67caf199$addOnTotal","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false},{"path":"pickedTotal","dynamic":false},{"path":"state.addOnPick.inventoryId","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.hasAddOns","guards":[],"expression":{"source":"count($36b1e3e5$pickIds) > 0","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false},{"path":"state.addOnPick.ids","dynamic":false},{"path":"state.addOnPick.inventoryId","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.id","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).id","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.img","guards":[],"expression":{"source":"$3fd7463d$mainThumb","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.name","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).name","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.price","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).price","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.selection.addOnIds","guards":[],"expression":{"source":"$36b1e3e5$pickIds","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false},{"path":"state.addOnPick.ids","dynamic":false},{"path":"state.addOnPick.inventoryId","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.selection.inventoryId","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).id","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[0].value.stock","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).stockNumber ?? (findBy(invRows, 'id', route.params.id)).wholegood.sku","writes":[],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]},{"consumer":"root.children[3].children[0].children[4].children[2].children[1].children[2].children[1].children[7].children[1].on.click[1].value","guards":[],"expression":{"source":"(findBy(invRows, 'id', route.params.id)).id","writes":["state.cart"],"deferred":true},"reads":[{"path":"invRows","dynamic":false}]}]},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-ProductDetail-okIcon"},"children":[{"$v":20},{"$v":21}]},{"tag":"span","text":"In your pickup cart.","props":{"class":"mui-v-ProductDetail-okText"}},{"children":[{"tag":"span","text":"View cart"},{"$v":8}],"tag":"a","props":{"href":"/cart","class":"mui-v-ProductDetail-okLink"},"on":{"click":[{"call":"navigate","to":"/cart"}]},"$demand":[]}],"props":{"role":"status","class":"mui-v-ProductDetail-ok"},"tag":"div","when":{"$t":401}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"tag":"path","props":{"d":"M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5"}},{"tag":"path","props":{"d":"M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244"}},{"tag":"path","props":{"d":"M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05"}}]},{"tag":"span","text":"Pickup orders only. We confirm availability and contact you before you head to the shop."}],"tag":"p","props":{"class":"mui-v-ProductDetail-pickupNote"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-buy"}},{"tag":"p","text":{"$t":138},"when":{"$t":137},"props":{"class":"mui-v-ProductDetail-desc"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-info"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-top"}},{"children":[{"children":[{"tag":"p","text":"Features","props":{"class":"mui-v-eyebrow"}},{"props":{"id":"feat-title","class":"mui-v-h2"},"tag":"h2","text":"Why it works"}],"tag":"div","props":{"class":"mui-v-ProductDetail-secHead"}},{"children":[{"children":[{"props":{"alt":"","height":"320","loading":"lazy","src":{"$t":241},"width":"320","class":"mui-v-ProductDetail-featImg"},"tag":"img","when":{"$t":240}},{"tag":"h3","text":{"$t":242},"props":{"class":"mui-v-ProductDetail-featName"}},{"tag":"p","text":{"$t":237},"props":{"class":"mui-v-ProductDetail-featDesc"}}],"repeat":{"as":"f","index":"fi","items":{"$t":80}},"tag":"article","props":{"class":"mui-v-ProductDetail-feat"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-featGrid"}}],"props":{"aria-labelledby":"feat-title","class":"mui-v-ProductDetail-section"},"tag":"section","when":{"$t":211}},{"children":[{"children":[{"children":[{"tag":"p","text":"Specifications","props":{"class":"mui-v-eyebrow"}},{"props":{"id":"spec-title","class":"mui-v-h2"},"tag":"h2","text":"Specs"}],"tag":"div"},{"children":[{"tag":"span","text":"Imperial","props":{"class":{"$t":13}}},{"children":[{"tag":"span","props":{"class":{"$t":11}}}],"props":{"aria-hidden":"true","class":{"$t":12}},"tag":"span"},{"tag":"span","text":"Metric","props":{"class":{"$t":14}}}],"on":{"click":[{"op":"toggle","path":"metric"}]},"props":{"aria-checked":{"$t":402},"aria-label":"Show metric units","role":"switch","type":"button","class":"mui-v-ProductDetail-switch"},"tag":"button","$demand":[]}],"tag":"div","props":{"class":"mui-v-ProductDetail-secHead mui-v-ProductDetail-secHeadRow"}},{"children":[{"children":[{"tag":"h3","text":{"$t":264},"props":{"class":"mui-v-ProductDetail-specGroup"}},{"children":[{"children":[{"tag":"dt","text":{"$t":356},"props":{"class":"mui-v-ProductDetail-specName"}},{"tag":"dd","text":{"$t":403},"props":{"class":"mui-v-ProductDetail-specVal"}}],"repeat":{"as":"sp","items":{"$t":265},"key":"id"},"tag":"div","props":{"class":"mui-v-ProductDetail-specRow"}}],"tag":"dl","props":{"class":"mui-v-ProductDetail-specList"}}],"repeat":{"as":"g","items":{"$t":58},"key":"id"},"tag":"div","props":{"class":"mui-v-ProductDetail-specCard"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-specGrid"}}],"props":{"aria-labelledby":"spec-title","class":"mui-v-ProductDetail-section"},"tag":"section","when":{"$t":209}},{"children":[{"children":[{"tag":"p","text":"Resources","props":{"class":"mui-v-eyebrow"}},{"props":{"id":"res-title","class":"mui-v-h2"},"tag":"h2","text":"Documents & links"}],"tag":"div","props":{"class":"mui-v-ProductDetail-secHead"}},{"children":[{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"tag":"path","props":{"d":"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}},{"tag":"path","props":{"d":"M14 2v5a1 1 0 0 0 1 1h5"}},{"tag":"path","props":{"d":"M10 9H8"}},{"tag":"path","props":{"d":"M16 13H8"}},{"tag":"path","props":{"d":"M16 17H8"}}]},{"tag":"span","text":{"$t":315}},{"$v":62},{"$v":63}],"props":{"rel":"noopener","target":"_blank","href":{"$t":326},"class":"mui-v-ProductDetail-res"},"tag":"a"}],"repeat":{"as":"r","index":"ri","items":{"$t":42}},"tag":"li"}],"tag":"ul","props":{"class":"mui-v-ProductDetail-resList"}}],"props":{"aria-labelledby":"res-title","class":"mui-v-ProductDetail-section"},"tag":"section","when":{"$t":205}},{"children":[{"children":[{"tag":"p","text":{"$t":88},"props":{"class":"mui-v-eyebrow"}},{"props":{"id":"more-title","class":"mui-v-h2"},"tag":"h2","text":"More like this"}],"tag":"div","props":{"class":"mui-v-ProductDetail-secHead"}},{"children":[{"children":[{"$v":51},{"$v":55}],"tag":"article","repeat":{"as":"row","items":{"$t":71},"key":"id"},"props":{"class":"mui-v-InventoryCard-card mui-m-inView"}}],"tag":"div","props":{"class":"mui-v-ProductDetail-moreGrid"}}],"props":{"aria-labelledby":"more-title","class":"mui-v-ProductDetail-section"},"tag":"section","when":{"$t":210}}],"tag":"article","when":{"$t":246}}],"tag":"div","$region":["inventory","promotions"]}],"tag":"div","when":{"$t":331},"props":{"class":"mui-v-container mui-v-ProductPage-wrap"}}],"tag":"main","props":{"class":"mui-v-pageMain"}},{"children":[{"children":[{"children":[{"children":[{"tag":"p","text":"Garland Saw","props":{"class":"mui-v-SiteFooter-brand"}},{"tag":"p","text":"& Lawnmower","props":{"class":"mui-v-SiteFooter-brandSub"}},{"tag":"p","text":"Family-owned outdoor power equipment dealer in historic downtown Garland. Parts, sales and service on STIHL, Toro, Husqvarna and more.","props":{"class":"mui-v-SiteFooter-blurb"}}],"tag":"div"},{"children":[{"tag":"h2","text":"Site","props":{"class":"mui-v-SiteFooter-head"}},{"children":[{"children":[{"tag":"a","text":{"$t":303},"props":{"href":{"$t":302},"class":"mui-v-SiteFooter-link"},"on":{"click":[{"call":"navigate","to":"{{ item.href }}"}]},"$demand":[]}],"repeat":{"as":"item","items":{"$t":203},"key":"id"},"tag":"li"},{"children":[{"tag":"a","text":"Pickup cart","props":{"href":"/cart","class":"mui-v-SiteFooter-link"},"on":{"click":[{"call":"navigate","to":"/cart"}]},"$demand":[]}],"tag":"li"}],"tag":"ul","props":{"class":"mui-v-SiteFooter-list"}}],"props":{"aria-label":"Footer"},"tag":"nav"},{"children":[{"tag":"h2","text":"Visit the shop","props":{"class":"mui-v-SiteFooter-head"}},{"children":[{"children":[{"$v":38},{"tag":"br"},{"$v":39}],"tag":"address","when":{"$t":304},"props":{"class":"mui-v-SiteFooter-address"}},{"children":[{"$v":22},{"$v":24}],"tag":"a","when":{"$t":313},"props":{"href":{"$t":415},"class":"mui-v-SiteFooter-link"},"on":{"click":[{"call":"navigate","to":"{{ telHref }}"}]},"$demand":[{"consumer":"root.children[3].children[1].children[0].children[0].children[2].children[1].children[1].on.click[0].to","guards":[],"expression":{"source":"telHref","writes":[],"deferred":true},"reads":[{"path":"telHref","dynamic":false}]}]},{"children":[{"$v":43},{"tag":"span","text":{"$t":311},"props":{"class":"mui-v-SiteFooter-wrap"}}],"tag":"a","when":{"$t":310},"props":{"href":{"$t":129},"class":"mui-v-SiteFooter-link"},"on":{"click":[{"call":"navigate","to":"{{ 'mailto:' + locEmail }}"}]},"$demand":[{"consumer":"root.children[3].children[1].children[0].children[0].children[2].children[1].children[2].on.click[0].to","guards":[],"expression":{"source":"'mailto:' + locEmail","writes":[],"deferred":true},"reads":[{"path":"locEmail","dynamic":false}]}]},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"$v":40}]},{"$v":41},{"$v":42}],"props":{"rel":"noopener","target":"_blank","href":{"$t":234},"class":"mui-v-SiteFooter-link"},"tag":"a","when":{"$t":312}},{"children":[{"$v":43},{"tag":"span","text":"Send us a message"}],"tag":"a","when":{"$t":306},"props":{"href":"/contact","class":"mui-v-SiteFooter-link"},"on":{"click":[{"call":"navigate","to":"/contact"}]},"$demand":[]}],"tag":"div","props":{"class":"mui-v-SiteFooter-contact"}}],"tag":"div"}],"tag":"div","props":{"class":"mui-v-SiteFooter-grid"}},{"children":[{"tag":"p","text":{"$t":131},"props":{"class":"mui-v-SiteFooter-small"}},{"children":["Site by ",{"props":{"rel":"noopener","target":"_blank","href":"https://makefl.com","class":"mui-v-SiteFooter-credit"},"tag":"a","text":"First Light"}],"tag":"p","props":{"class":"mui-v-SiteFooter-small"}}],"tag":"div","props":{"class":"mui-v-SiteFooter-bottom"}}],"tag":"div","props":{"class":"mui-v-container"}}],"tag":"footer","props":{"class":"mui-v-SiteFooter-foot"}}],"props":{"data-mui-scroll-root":"","id":"main-content","tabindex":"-1","class":"mui-v-scroller"},"tag":"div"},{"children":[{"children":[{"children":[{"children":[{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"$v":20},{"$v":59},{"$v":60}]},{"tag":"span","text":"Financing disclosure"}],"tag":"p","props":{"class":"mui-v-eyebrow"}},{"props":{"id":"fin-title","class":"mui-v-FinanceDialog-title"},"tag":"h2","text":{"$t":392}}],"tag":"div"},{"children":[{"$v":4}],"on":{"click":[{"op":"set","path":"disclosure","value":null}]},"props":{"aria-label":"Close disclosure","type":"button","class":"mui-v-iconBtn"},"tag":"button","$demand":[]}],"tag":"div","props":{"class":"mui-v-FinanceDialog-head"}},{"children":[{"children":[{"tag":"dt","text":"Payment","props":{"class":"mui-v-FinanceDialog-dt"}},{"tag":"dd","text":{"$t":105},"props":{"class":"mui-v-FinanceDialog-dd"}}],"tag":"div","props":{"class":"mui-v-FinanceDialog-term"}},{"children":[{"tag":"dt","text":"Interest","props":{"class":"mui-v-FinanceDialog-dt"}},{"tag":"dd","text":{"$t":256},"props":{"class":"mui-v-FinanceDialog-dd"}}],"tag":"div","props":{"class":"mui-v-FinanceDialog-term"}},{"children":[{"tag":"dt","text":"Term","props":{"class":"mui-v-FinanceDialog-dt"}},{"tag":"dd","text":{"$t":391},"props":{"class":"mui-v-FinanceDialog-dd"}}],"tag":"div","props":{"class":"mui-v-FinanceDialog-term"}}],"tag":"dl","props":{"class":"mui-v-FinanceDialog-terms"}},{"tag":"p","text":{"$t":390},"when":{"$t":389},"props":{"class":"mui-v-FinanceDialog-plan"}},{"props":{"id":"fin-body","class":"mui-v-FinanceDialog-body"},"tag":"p","text":{"$t":388}},{"tag":"p","text":"Estimated monthly payment for the machine only, before sales tax. Add-ons are priced separately. Your final terms are confirmed by the lender.","props":{"class":"mui-v-FinanceDialog-note"}},{"children":[{"children":[{"tag":"span","text":"Apply for financing"},{"$v":62},{"$v":63}],"props":{"rel":"noopener","target":"_blank","href":{"$t":387},"class":"mui-v-btn mui-v-btnPrimary"},"tag":"a","when":{"$t":386}},{"on":{"click":[{"op":"set","path":"disclosure","value":null}]},"props":{"data-initial-focus":"","type":"button","class":"mui-v-btn mui-v-btnSecondary"},"tag":"button","text":"Close","$demand":[]}],"tag":"div","props":{"class":"mui-v-FinanceDialog-actions"}}],"props":{"aria-describedby":"fin-body","aria-labelledby":"fin-title","aria-modal":"true","role":"dialog","tabindex":"-1","class":"mui-v-FinanceDialog-sheet mui-m-rise"},"tag":"section"}],"tag":"div","use":[{"action":{"op":"set","path":"disclosure","value":null},"behavior":"modalSurface","initialFocus":"[data-initial-focus]","surface":"[role='dialog']"}],"when":{"$t":385},"props":{"class":"mui-v-FinanceDialog-backdrop mui-m-scrimIn","data-mui-exit":"scrimOut"},"$demand":[]}],"tag":"div","props":{"class":"mui-v-appRoot","style":{"$t":0}}},"shared":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":1},{"$v":2},{"$v":3}]},{"tag":"circle","props":{"cx":"8","cy":"21","r":"1"}},{"tag":"circle","props":{"cx":"19","cy":"21","r":"1"}},{"tag":"path","props":{"d":"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":5},{"$v":6}]},{"tag":"path","props":{"d":"M18 6 6 18"}},{"tag":"path","props":{"d":"m6 6 12 12"}},{"tag":"path","props":{"d":"m9 18 6-6-6-6"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"$v":9},{"$v":10}]},{"tag":"path","props":{"d":"M5 12h14"}},{"tag":"path","props":{"d":"m12 5 7 7-7 7"}},{"tag":"path","props":{"d":"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z"}},{"tag":"path","props":{"d":"m12 14 4-4"}},{"tag":"path","props":{"d":"M3.34 19a10 10 0 1 1 17.32 0"}},{"tag":"path","props":{"d":"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"}},{"tag":"path","props":{"d":"M12 22V12"}},{"tag":"polyline","props":{"points":"3.29 7 12 12 20.71 7"}},{"tag":"path","props":{"d":"m7.5 4.27 9 5.15"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"tag":"path","props":{"d":"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z"}},{"tag":"circle","props":{"cx":"7.5","cy":"7.5","r":".5","fill":"currentColor"}}]},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-Home-checkIcon"},"children":[{"$v":20},{"$v":21}]},{"tag":"circle","props":{"cx":"12","cy":"12","r":"10"}},{"tag":"path","props":{"d":"m9 12 2 2 4-4"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"$v":23}]},{"tag":"path","props":{"d":"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"}},{"tag":"span","text":{"$t":319}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg"},"children":[{"$v":20},{"$v":21}]},{"tag":"span","text":"Optional","when":{"$t":243},"props":{"class":"mui-v-FormField-opt"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"$v":20},{"$v":28},{"$v":29}]},{"tag":"line","props":{"x1":"12","x2":"12","y1":"8","y2":"12"}},{"tag":"line","props":{"x1":"12","x2":"12.01","y1":"16","y2":"16"}},{"tag":"span","text":"Email"},{"tag":"span","text":"Phone"},{"tag":"span","text":"Optional","when":{"$t":433},"props":{"class":"mui-v-FormField-opt"}},{"tag":"span","text":""},{"tag":"path","props":{"d":"M21 12a9 9 0 1 1-6.219-8.56"}},{"tag":"path","props":{"d":"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"}},{"tag":"path","props":{"d":"m21.854 2.147-10.94 10.939"}},{"tag":"path","props":{"d":"m6 9 6 6 6-6"}},{"tag":"span","text":{"$t":307}},{"tag":"span","text":{"$t":309}},{"tag":"polygon","props":{"points":"3 11 22 2 13 21 11 13 3 11"}},{"tag":"span","text":"Get directions"},{"tag":"span","text":"(opens Google Maps in a new tab)","props":{"class":"mui-v-srOnly"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"tag":"path","props":{"d":"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"}},{"tag":"rect","props":{"x":"2","y":"4","width":"20","height":"16","rx":"2"}}]},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"$v":5},{"$v":6}]},{"tag":"path","props":{"d":"m21 21-4.34-4.34"}},{"tag":"circle","props":{"cx":"11","cy":"11","r":"8"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd mui-v-InventoryPage-chev"},"children":[{"$v":37}]},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg"},"children":[{"tag":"path","props":{"d":"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"}},{"tag":"path","props":{"d":"M12 9v4"}},{"tag":"path","props":{"d":"M12 17h.01"}}]},{"tag":"p","text":{"$t":322},"props":{"class":"mui-v-lede"}},{"children":[{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"tag":"path","props":{"d":"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}},{"tag":"path","props":{"d":"M21 3v5h-5"}},{"tag":"path","props":{"d":"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}},{"tag":"path","props":{"d":"M8 16H3v5"}}]},{"tag":"span","text":"Try again"}],"on":{"click":[{"call":"data.refresh","value":"inventory"}]},"props":{"type":"button","class":"mui-v-btn mui-v-btnSecondary"},"tag":"button","when":{"$t":324},"$demand":[]},{"children":[{"props":{"alt":{"$t":341},"height":"480","loading":"lazy","src":{"$t":51},"width":"640","class":"mui-v-InventoryCard-img"},"tag":"img","when":{"$t":49}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconLg mui-v-InventoryCard-noImg"},"children":[{"$v":52},{"$v":53},{"$v":54}],"when":{"$t":50}},{"children":[{"tag":"span","text":{"$t":316},"props":{"class":"mui-v-InventoryCard-cond"}}],"tag":"div","props":{"class":"mui-v-InventoryCard-badges"}}],"props":{"aria-hidden":"true","tabindex":"-1","href":{"$t":52},"class":"mui-v-InventoryCard-media"},"tag":"a","on":{"click":[{"call":"navigate","to":"{{ $4d90eda5$href }}"}]},"$demand":[]},{"tag":"rect","props":{"width":"18","height":"18","x":"3","y":"3","rx":"2","ry":"2"}},{"tag":"circle","props":{"cx":"9","cy":"9","r":"2"}},{"tag":"path","props":{"d":"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"}},{"children":[{"children":[{"$v":18},{"tag":"span","text":{"$t":68}}],"tag":"p","when":{"$t":67},"props":{"class":"mui-v-InventoryCard-promo"}},{"children":[{"tag":"a","text":{"$t":341},"props":{"href":{"$t":52},"class":"mui-v-InventoryCard-nameLink"},"on":{"click":[{"call":"navigate","to":"{{ $4d90eda5$href }}"}]},"$demand":[]}],"tag":"h3","props":{"class":"mui-v-InventoryCard-name"}},{"tag":"p","text":{"$t":169},"props":{"class":"mui-v-InventoryCard-meta"}},{"children":[{"children":[{"children":[{"tag":"span","text":{"$t":55},"props":{"class":"mui-v-PriceBlock-label"}},{"tag":"span","text":{"$t":104},"props":{"class":{"$t":6}}}],"tag":"div","props":{"class":"mui-v-PriceBlock-cell"}},{"children":[{"$v":56},{"tag":"span","text":{"$t":100},"props":{"class":{"$t":4}}}],"tag":"div","when":{"$t":56},"props":{"class":"mui-v-PriceBlock-cell"}}],"tag":"div","props":{"class":"mui-v-PriceBlock-prices"}},{"children":[{"children":[{"tag":"span","text":{"$t":99},"props":{"class":"mui-v-PriceBlock-pay"}},{"$v":57},{"tag":"span","text":{"$t":255},"props":{"class":"mui-v-PriceBlock-terms"}}],"tag":"span","props":{"class":"mui-v-PriceBlock-payText"}},{"children":[{"$v":58}],"on":{"click":[{"op":"set","path":"disclosure","value":{"applyUrl":"{{ row.finance.applyUrl ?? '' }}","apr":"{{ row.finance.apr }}","disclosure":"{{ row.finance.disclosure }}","name":"{{ row.finance.name }}","payment":"{{ row.finance.payment }}","termMonths":"{{ row.finance.termMonths }}","title":"{{ row.name }}"}}]},"props":{"aria-haspopup":"dialog","aria-label":"Financing disclosure","type":"button","class":"mui-v-PriceBlock-info"},"tag":"button","$demand":[]}],"tag":"div","when":{"$t":334},"props":{"class":"mui-v-PriceBlock-payRow"}}],"tag":"div","props":{"class":"mui-v-PriceBlock-root"}},{"children":[{"tag":"span","text":"View details"},{"$v":8}],"props":{"aria-label":{"$t":125},"href":{"$t":52},"class":"mui-v-InventoryCard-more"},"tag":"a","on":{"click":[{"call":"navigate","to":"{{ $4d90eda5$href }}"}]},"$demand":[]}],"tag":"div","props":{"class":"mui-v-InventoryCard-body"}},{"tag":"span","text":"Cash price","props":{"class":"mui-v-PriceBlock-label"}},{"tag":"span","text":"/mo","props":{"class":"mui-v-PriceBlock-per"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconMd"},"children":[{"$v":20},{"$v":59},{"$v":60}]},{"tag":"path","props":{"d":"M12 16v-4"}},{"tag":"path","props":{"d":"M12 8h.01"}},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"$v":7}]},{"tag":"svg","props":{"xmlns":"http://www.w3.org/2000/svg","width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true","focusable":"false","class":"mui-v-iconSm"},"children":[{"tag":"path","props":{"d":"M15 3h6v6"}},{"tag":"path","props":{"d":"M10 14 21 3"}},{"tag":"path","props":{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}}]},{"tag":"span","text":"(opens in a new tab)","props":{"class":"mui-v-srOnly"}}]},"operations":{"id":"operations:44ecf544d550ebfa","entries":[{"id":"intent:clipboard.copy","name":"clipboard.copy","lineage":"clipboard.copy","kind":"intent","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"copy a value to the host clipboard","input":{"type":"object","additionalProperties":false,"properties":{"value":{}}},"result":null,"effect":"external","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":["clipboard"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:commands.checkStatus","name":"commands.checkStatus","lineage":"commands.checkStatus","kind":"intent","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"check the outcome of one journal-accepted command without repeating it; value is its notification id or fx occurrence. Unknown or already terminal identities are inert.","input":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","description":"the accepted command's own identity"}}},"result":null,"effect":"read","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:contact.create","name":"contact.create","lineage":"contact","kind":"intent","owner":"data","availability":"executable","exposed":true,"emitted":true,"description":"create one row in the `contact` collection — the fields ride UNDER `value`","input":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"topic":{"type":"string"},"message":{"type":"string"},"id":{}},"description":"the new row's fields"}}},"result":null,"effect":"write","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"compensating"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"intent:contact.create","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:d3d37e41f85dadc3"},"source":null,"provider":{"source":"formEmail","owner":"app.form-email.web via capability `formEmail`","collection":"messages","anonymousCapable":null}},{"id":"intent:data.refresh","name":"data.refresh","lineage":"data.refresh","kind":"intent","owner":"data","availability":"executable","exposed":true,"emitted":true,"description":"retry acquisition of one declared data binding","input":{"type":"object","additionalProperties":false,"properties":{"value":{"type":"string"}}},"result":null,"effect":"read","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:inbox.post","name":"inbox.post","lineage":"inbox.post","kind":"intent","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"post a payload to a host-wired inbox channel","input":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"object","additionalProperties":false,"required":["to","payload"],"properties":{"to":{"type":"string"},"payload":{}}}}},"result":null,"effect":"external","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":["inbox"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:leads.create","name":"leads.create","lineage":"leads","kind":"intent","owner":"data","availability":"executable","exposed":true,"emitted":true,"description":"create one row in the `leads` collection — the fields ride UNDER `value`","input":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"object","additionalProperties":false,"properties":{"customerName":{"type":"string"},"contact":{"type":"object"},"inventoryIds":{"type":"array"},"addOnSelections":{"type":"array"},"id":{}},"required":["customerName","contact","inventoryIds"],"description":"the new row's fields"}}},"result":null,"effect":"write","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"compensating"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"intent:leads.create","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:82de5f8ecbd07584"},"source":null,"provider":{"source":"opehubLeads","owner":"opehub.rest via capability `opehub`","collection":"websiteLeads","anonymousCapable":true}},{"id":"intent:manifest.edit","name":"manifest.edit","lineage":"manifest.edit","kind":"intent","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"submit a governed manifest patch","input":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"result":null,"effect":"write","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:media.remove","name":"media.remove","lineage":"media","kind":"intent","owner":"asset","availability":"executable","exposed":true,"emitted":false,"description":"detach the `media` asset reference at `path`","input":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"path":{"type":"string","description":"the state path of the asset reference cell"}}},"result":null,"effect":"write","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":["asset:tenantMedia"],"command":null,"notify":{"ok":null,"problem":"auto"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"retry-idempotent","reversibility":"compensating"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:media.upload","name":"media.upload","lineage":"media","kind":"intent","owner":"asset","availability":"executable","exposed":true,"emitted":false,"description":"upload a user-chosen file into `media`; the bytes ride a user file-input event and cannot be supplied by a model call","input":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"path":{"type":"string","description":"the state path of the asset reference cell"}}},"result":null,"effect":"external","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":["asset:tenantMedia"],"command":null,"notify":{"ok":null,"problem":"auto"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:media.uploadUrl","name":"media.uploadUrl","lineage":"media","kind":"intent","owner":"asset","availability":"executable","exposed":true,"emitted":false,"description":"ask the selected provider to import an http(s) URL into `media`; the provider owns SSRF, timeout, and byte limits","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"path":{"type":"string","description":"the state path of the asset reference cell"},"value":{"type":"string","description":"the http(s) URL to import"}}},"result":null,"effect":"external","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":["asset:tenantMedia"],"command":null,"notify":{"ok":null,"problem":"auto"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:navigate","name":"navigate","lineage":"navigate","kind":"intent","owner":"engine","availability":"executable","exposed":true,"emitted":true,"description":"navigate within the declared route graph","input":{"type":"object","additionalProperties":false,"properties":{"to":{"type":"string"},"query":{"type":"object","additionalProperties":true},"replace":{"type":"boolean"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"intent:notifications.dismiss","name":"notifications.dismiss","lineage":"notifications.dismiss","kind":"intent","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"close one notification the engine's stream is carrying; `value` is that entry's `id`. Idempotent — an id already closed or never seen settles ok.","input":{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"string","description":"the `id` of the notification row being closed"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":{"capability":"host-intent","action":"intent.dispatch","policy":{"authorization":"manifest.intent","audit":"app","cost":"none","recovery":"reconcile","reversibility":"irreversible"},"problemCodes":["INTENT_FAILED","INTENT_REJECTED","CALL_UNHANDLED"]},"authority":null,"source":null,"provider":null},{"id":"op:append","name":"append","lineage":"append","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"append the item to the end of the list at path","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to append to","type":"string"},"value":{"description":"the item to append"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:choose","name":"choose","lineage":"choose","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"branch: run `then` when cond is truthy, else `else` (lazy — only the taken branch runs)","input":{"type":"object","additionalProperties":false,"required":["cond"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"cond":{"description":"a {{ }} condition: runs `then` if truthy, else `else`","type":"string"},"then":{"description":"the action run when cond is truthy","type":"object","default":null},"else":{"description":"the action run when cond is falsy","type":"object","default":null}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:clear","name":"clear","lineage":"clear","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"reset a list path to [] (a provided `value` list replaces instead — but prefer setList for that; clear is the empty case)","input":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to reset","type":"string"},"value":{"description":"the list to reset to","type":"array","default":[]}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:decr","name":"decr","lineage":"decr","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"subtract an amount (default 1) from a number at a state path","input":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the numeric state path to subtract from","type":"string"},"by":{"description":"amount to subtract","type":"number","default":1}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:dedupe","name":"dedupe","lineage":"dedupe","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"remove duplicate items from the list at path (by a key field when given, else by value)","input":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to dedupe","type":"string"},"key":{"description":"the field to dedupe by; omit to dedupe by whole value","type":"string","default":null}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:deepMerge","name":"deepMerge","lineage":"deepMerge","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"recursively merge an object into the object at path (nested plain objects merge; arrays and scalars replace)","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the object path to deep-merge into","type":"string"},"value":{"description":"the object recursively merged in (nested objects merge; arrays/scalars replace)","type":"object"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:delete","name":"delete","lineage":"delete","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"remove one own key from the object at path","input":{"type":"object","additionalProperties":false,"required":["path","key"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the object path to remove a key from","type":"string"},"key":{"description":"the own key to remove","type":"string"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:incr","name":"incr","lineage":"incr","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"add an amount (default 1) to a number at a state path","input":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the numeric state path to add to","type":"string"},"by":{"description":"amount to add","type":"number","default":1}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:insertAt","name":"insertAt","lineage":"insertAt","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"insert the item at a position in the list at path (index clamps to the ends)","input":{"type":"object","additionalProperties":false,"required":["path","index","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to insert into","type":"string"},"index":{"description":"position to insert at (number or {{ }} expression; clamped to [0, length])","type":"number"},"value":{"description":"the item to insert"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:merge","name":"merge","lineage":"merge","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"shallow-merge an object into the object at path (top-level keys overwrite)","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the object path to merge into","type":"string"},"value":{"description":"the object whose keys are shallow-merged in","type":"object"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:move","name":"move","lineage":"move","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"move a list item from one position to another (positions clamp; same-position is a no-op)","input":{"type":"object","additionalProperties":false,"required":["path","from","to"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to reorder","type":"string"},"from":{"description":"index to move from (number or {{ }} expression)","type":"number"},"to":{"description":"index to move to (number or {{ }} expression)","type":"number"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:patchWhere","name":"patchWhere","lineage":"patchWhere","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"in the list at path, shallow-merge an object into the row whose idKey matches id (untouched fields survive)","input":{"type":"object","additionalProperties":false,"required":["path","id","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path","type":"string"},"id":{"description":"the id value to match"},"idKey":{"description":"the field matched against id (read own-only)","type":"string","default":"id"},"value":{"description":"the object shallow-merged into the matched row (top-level keys overwrite)","type":"object"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:prepend","name":"prepend","lineage":"prepend","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"insert the item at the start of the list at path","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to prepend to","type":"string"},"value":{"description":"the item to prepend"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:pushUnique","name":"pushUnique","lineage":"pushUnique","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"append the item to the list only if it is not already present","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to append to","type":"string"},"value":{"description":"the item to append if absent"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:removeAt","name":"removeAt","lineage":"removeAt","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"remove the item at a position from the list at path","input":{"type":"object","additionalProperties":false,"required":["path","index"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to remove from","type":"string"},"index":{"description":"position to remove (number or {{ }} expression)","type":"number"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:removeFromList","name":"removeFromList","lineage":"removeFromList","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"remove every occurrence of the item from the list","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to update","type":"string"},"value":{"description":"the item to remove"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:removeWhere","name":"removeWhere","lineage":"removeWhere","kind":"op","owner":"engine","availability":"executable","exposed":true,"emitted":true,"description":"remove every row whose key field equals the value from the list at path","input":{"type":"object","additionalProperties":false,"required":["path","key","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to filter","type":"string"},"key":{"description":"the field compared on each item (read own-only)","type":"string"},"value":{"description":"items whose key equals this are dropped"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:selectAll","name":"selectAll","lineage":"selectAll","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"write the key of every non-disabled option object from `from` into the list at path","input":{"type":"object","additionalProperties":false,"required":["path","from"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the path to write the selection to","type":"string"},"from":{"description":"the source list to select from","type":"array"},"key":{"description":"the field read from each item","type":"string","default":"value"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:set","name":"set","lineage":"set","kind":"op","owner":"engine","availability":"executable","exposed":true,"emitted":true,"description":"write a value to a state path","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the state path to write","type":"string"},"value":{"description":"the value to write"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:setIfEmpty","name":"setIfEmpty","lineage":"setIfEmpty","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"write the value only when the path is empty (null/undefined/empty string)","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the path to default","type":"string"},"value":{"description":"the value to set when the path is null/absent"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:setList","name":"setList","lineage":"setList","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"write a whole list to a state path (a non-array value becomes [])","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to write","type":"string"},"value":{"description":"the list value to set","type":"array"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:setMinMax","name":"setMinMax","lineage":"setMinMax","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"sort the pair: write the lesser of a/b to minPath and the greater to maxPath","input":{"type":"object","additionalProperties":false,"required":["a","b","minPath","maxPath"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"a":{"description":"first value to compare"},"b":{"description":"second value to compare"},"minPath":{"description":"path to write the lesser of a and b","type":"string"},"maxPath":{"description":"path to write the greater of a and b","type":"string"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:sortList","name":"sortList","lineage":"sortList","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"reorder the list at path by a field (through the sortBy helper), ascending or descending","input":{"type":"object","additionalProperties":false,"required":["path","key"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to sort","type":"string"},"key":{"description":"the field to sort by","type":"string"},"dir":{"description":"'desc' reverses; otherwise ascending","type":"string","default":"asc"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:swap","name":"swap","lineage":"swap","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"exchange the values at two state paths","input":{"type":"object","additionalProperties":false,"required":["pathA","pathB"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"pathA":{"description":"one state path","type":"string"},"pathB":{"description":"the other state path","type":"string"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:toggle","name":"toggle","lineage":"toggle","kind":"op","owner":"engine","availability":"executable","exposed":true,"emitted":true,"description":"flip a boolean at a state path","input":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the boolean state path to flip","type":"string"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:toggleInList","name":"toggleInList","lineage":"toggleInList","kind":"op","owner":"engine","availability":"executable","exposed":true,"emitted":true,"description":"add the item to the list if absent, remove it if present","input":{"type":"object","additionalProperties":false,"required":["path","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to update","type":"string"},"value":{"description":"the item to add if absent or remove if present"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:unsetPath","name":"unsetPath","lineage":"unsetPath","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"remove the state slot at path entirely (the key is deleted, not set to undefined)","input":{"type":"object","additionalProperties":false,"required":["path"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the property path to remove; dynamic-keyed brackets are resolved against scope at dispatch","type":"string"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:updateWhere","name":"updateWhere","lineage":"updateWhere","kind":"op","owner":"engine","availability":"executable","exposed":false,"emitted":false,"description":"in the list at path, set one field on the row whose idKey matches id","input":{"type":"object","additionalProperties":false,"required":["path","id","field","value"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path to update","type":"string"},"id":{"description":"the id value to match"},"idKey":{"description":"the field matched against id","type":"string","default":"id"},"field":{"description":"the field written on the matched row","type":"string"},"value":{"description":"the value written to field"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"op:upsert","name":"upsert","lineage":"upsert","kind":"op","owner":"engine","availability":"executable","exposed":true,"emitted":true,"description":"in the list at path, replace the row with a matching id or append it when absent","input":{"type":"object","additionalProperties":false,"required":["path","value","key"],"properties":{"when":{"type":"string","description":"optional whole {{ }} guard; it reads the evolving transaction draft, including earlier sibling writes, and the action runs only if it is truthy"},"debounce":{"type":"number","description":"optional trailing-edge debounce in ms — the DOM host coalesces rapid events and dispatches once after this quiet period (headless runners and source pushes ignore it)"},"andThen":{"oneOf":[{"type":"object"},{"type":"null"}],"description":"optional coupled follow-up op; it runs only when this op ran. A chained follow-up with its own when must be terminal because a false guard stops its tail; keep independent guards as siblings or use choose"},"path":{"description":"the list path","type":"string"},"value":{"description":"the row to insert or replace","type":"object"},"key":{"description":"the field matched to find an existing row (own-only)","type":"string"}}},"result":null,"effect":"local","staticWrites":[],"dynamicWrites":false,"capability":null,"hostRequirements":[],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":null,"source":null,"provider":null},{"id":"source:categories.read","name":"categories.read","lineage":"categories","kind":"source","owner":"data","availability":"executable","exposed":true,"emitted":false,"description":"acquire the reviewed `categories` binding projection","input":{"type":"object","additionalProperties":false},"result":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"number","description":"number of rows admitted by this acquisition"},"hasMore":{"type":"boolean","description":"whether another reviewed page may be available"}}},"effect":"read","staticWrites":["categories"],"dynamicWrites":false,"capability":null,"hostRequirements":["source:opehub"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"source:categories.read","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:45796f98b7d0902e"},"source":{"name":"opehub","owner":"opehub.rest via capability `opehub`","definition":"source:562a17210b9ea3a7","collection":"categories"},"provider":null},{"id":"source:contact.read","name":"contact.read","lineage":"contact","kind":"source","owner":"data","availability":"executable","exposed":true,"emitted":false,"description":"acquire the reviewed `contact` binding projection","input":{"type":"object","additionalProperties":false},"result":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"number","description":"number of rows admitted by this acquisition"},"hasMore":{"type":"boolean","description":"whether another reviewed page may be available"}}},"effect":"read","staticWrites":["contactMessages"],"dynamicWrites":false,"capability":null,"hostRequirements":["source:formEmail"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"source:contact.read","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:b8509c6ac8d8af08"},"source":{"name":"formEmail","owner":"app.form-email.web via capability `formEmail`","definition":"source:0e1d5d96e35ed4c0","collection":"messages"},"provider":null},{"id":"source:dealer.read","name":"dealer.read","lineage":"dealer","kind":"source","owner":"data","availability":"executable","exposed":true,"emitted":false,"description":"acquire the reviewed `dealer` binding projection","input":{"type":"object","additionalProperties":false},"result":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"number","description":"number of rows admitted by this acquisition"},"hasMore":{"type":"boolean","description":"whether another reviewed page may be available"}}},"effect":"read","staticWrites":["dealer"],"dynamicWrites":false,"capability":null,"hostRequirements":["source:opehub"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"source:dealer.read","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:dd4c3ed5884caf1b"},"source":{"name":"opehub","owner":"opehub.rest via capability `opehub`","definition":"source:562a17210b9ea3a7","collection":"dealer"},"provider":null},{"id":"source:inventory.read","name":"inventory.read","lineage":"inventory","kind":"source","owner":"data","availability":"executable","exposed":true,"emitted":false,"description":"acquire the reviewed `inventory` binding projection","input":{"type":"object","additionalProperties":false},"result":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"number","description":"number of rows admitted by this acquisition"},"hasMore":{"type":"boolean","description":"whether another reviewed page may be available"}}},"effect":"read","staticWrites":["inventory"],"dynamicWrites":false,"capability":null,"hostRequirements":["source:opehub"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"source:inventory.read","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:090334825c0b5e94"},"source":{"name":"opehub","owner":"opehub.rest via capability `opehub`","definition":"source:562a17210b9ea3a7","collection":"inventory"},"provider":null},{"id":"source:leads.read","name":"leads.read","lineage":"leads","kind":"source","owner":"data","availability":"executable","exposed":true,"emitted":false,"description":"acquire the reviewed `leads` binding projection","input":{"type":"object","additionalProperties":false},"result":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"number","description":"number of rows admitted by this acquisition"},"hasMore":{"type":"boolean","description":"whether another reviewed page may be available"}}},"effect":"read","staticWrites":["leads"],"dynamicWrites":false,"capability":null,"hostRequirements":["source:opehubLeads"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"source:leads.read","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:7bf39c1163b8f4fb"},"source":{"name":"opehubLeads","owner":"opehub.rest via capability `opehub`","definition":"source:b9c2608facb129a9","collection":"websiteLeads"},"provider":null},{"id":"source:promotions.read","name":"promotions.read","lineage":"promotions","kind":"source","owner":"data","availability":"executable","exposed":true,"emitted":false,"description":"acquire the reviewed `promotions` binding projection","input":{"type":"object","additionalProperties":false},"result":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"number","description":"number of rows admitted by this acquisition"},"hasMore":{"type":"boolean","description":"whether another reviewed page may be available"}}},"effect":"read","staticWrites":["promotions"],"dynamicWrites":false,"capability":null,"hostRequirements":["source:opehub"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"source:promotions.read","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:149fa4c603529d00"},"source":{"name":"opehub","owner":"opehub.rest via capability `opehub`","definition":"source:562a17210b9ea3a7","collection":"promotions"},"provider":null},{"id":"source:websiteContent.read","name":"websiteContent.read","lineage":"websiteContent","kind":"source","owner":"data","availability":"executable","exposed":true,"emitted":false,"description":"acquire the reviewed `websiteContent` binding projection","input":{"type":"object","additionalProperties":false},"result":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"number","description":"number of rows admitted by this acquisition"},"hasMore":{"type":"boolean","description":"whether another reviewed page may be available"}}},"effect":"read","staticWrites":["websiteContent"],"dynamicWrites":false,"capability":null,"hostRequirements":["source:opehub"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"source:websiteContent.read","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:dac4b1c2962b5818"},"source":{"name":"opehub","owner":"opehub.rest via capability `opehub`","definition":"source:562a17210b9ea3a7","collection":"websiteContent"},"provider":null},{"id":"source:wholegoods.read","name":"wholegoods.read","lineage":"wholegoods","kind":"source","owner":"data","availability":"executable","exposed":true,"emitted":false,"description":"acquire the reviewed `wholegoods` binding projection","input":{"type":"object","additionalProperties":false},"result":{"type":"object","additionalProperties":false,"properties":{"count":{"type":"number","description":"number of rows admitted by this acquisition"},"hasMore":{"type":"boolean","description":"whether another reviewed page may be available"}}},"effect":"read","staticWrites":["wholegoods"],"dynamicWrites":false,"capability":null,"hostRequirements":["source:opehub"],"command":null,"notify":{"ok":null,"problem":"silent"},"plan":null,"authority":{"worldId":"world:4ef2f20063d9357a","operationId":"source:wholegoods.read","actors":[{"name":"administrator","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-administrator"}},{"name":"visitor","matcher":"first-light-actor.has","matcherId":"first-light-actor@1.0.0:has@c6067841bc80f0b3","config":{"actor":"first-light.app-visitor"}}],"grant":[{"actors":["visitor"]}],"id":"authority:e42ed01fe5455689"},"source":{"name":"opehub","owner":"opehub.rest via capability `opehub`","definition":"source:562a17210b9ea3a7","collection":"wholegoods"},"provider":null}],"errors":[]},"references":{"schema":"singularity.manifest-reference-graph.v1","version":"1","worldContractId":"world-contract:6c89d0076188b641","vocabulary":{"helpers":["abs","coalesce","contains","count","filterBy","findBy","first","fixed","formatDate","get","groupRows","gt","includes","isString","join","length","lookup","mod","nth","opehub__formatPhone","partition","pluck","pluralize","replace","round","routeActive","searchBy","slice","sortBy","startsWith","sumBy","take","tenant_media__imageUrl","thousands","toInt","toJson","trim","truncate","uniqueBy","words"],"operations":["removeWhere","set","toggle","toggleInList","upsert"],"namespaces":["opehub","tenant-media"]},"components":{"names":["lucide__ArrowRight","lucide__ArrowUpRight","lucide__ChevronDown","lucide__ChevronRight","lucide__CircleAlert","lucide__CircleCheck","lucide__ExternalLink","lucide__FileText","lucide__Gauge","lucide__Image","lucide__Info","lucide__LayoutGrid","lucide__LoaderCircle","lucide__Mail","lucide__MapPin","lucide__Menu","lucide__Navigation","lucide__Package","lucide__Phone","lucide__RefreshCw","lucide__Search","lucide__Send","lucide__ShoppingCart","lucide__Store","lucide__Tag","lucide__Trash","lucide__TriangleAlert","lucide__Users","lucide__Wrench","lucide__X"],"namespaces":["lucide"]},"behaviors":["autoFocus","delay","modalSurface"],"lifecycle":{"triggers":[],"agents":[]},"policy":{"actorMatchers":["first-light-actor.has"]},"capabilities":{"declarations":[{"name":"firstLight","kind":"first-light.builder"},{"name":"formEmail","kind":"app.form-email.web"},{"name":"media","kind":"cloudflare.r2.tenant-media.web"},{"name":"opehub","kind":"opehub.rest"}],"dependencies":[],"actions":[],"problems":[],"provisions":[{"capability":"media","kind":"assets","name":"tenantMedia"},{"capability":"formEmail","kind":"data","name":"formEmail"},{"capability":"opehub","kind":"data","name":"opehub"},{"capability":"opehub","kind":"data","name":"opehubLeads"}],"hostRequirements":["asset:tenantMedia","capability:formEmail:app-id","capability:formEmail:mount:capabilityData","capability:formEmail:source-authority","capability:formEmail:source-authority-identity","capability:formEmail:source-resource-identity:formEmail","capability:media:app-id","capability:media:mount:media","capability:opehub:app-id","capability:opehub:mount:capabilityData","capability:opehub:source-authority","capability:opehub:source-resource-identity:opehub","capability:opehub:source-resource-identity:opehubLeads","clipboard","inbox","source:formEmail","source:opehub","source:opehubLeads"]},"resources":{"data":["formEmail","opehub","opehubLeads"],"assets":["media@tenantMedia"],"ai":[],"directSources":[],"elements":[]},"optional":{"models":[],"agents":[]},"diagnostics":[],"resolved":true,"id":"references:d95f47745101faea"},"sourceNames":["formEmail","opehub","opehubLeads"],"manifestContentAddress":"manifest:2943c5bee83ebb7c"}