{"title":"Dandy Curb Sack","description":"\u003cdiv id=\"ld-csu\"\u003e\n  \u003cdiv class=\"in\"\u003e\n\n    \u003cdiv class=\"band\"\u003e\n      \u003cdiv class=\"row\"\u003e\n        \u003cdiv\u003e\n          \u003cp class=\"eyb\"\u003eGrate + Curb Opening · 3 Sizes\u003c\/p\u003e\n          \u003ch1\u003eDandy Curb Sack\u003c\/h1\u003e\n          \u003cp class=\"tag\"\u003eOne Unit. Both Openings.\u003c\/p\u003e\n          \u003cp class=\"sub\"\u003eHangs beneath the grate and seals the curb opening with a cylindrical section. The only unit in the range that covers both routes in.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"aside\"\u003e\n          \u003cul class=\"bl\"\u003e\n            \u003cli\u003e\n\u003csvg class=\"ck\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpolyline points=\"4 12.5 9.5 18 20 6\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003eCovers the grate and the curb face\u003c\/li\u003e\n            \u003cli\u003e\n\u003csvg class=\"ck\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpolyline points=\"4 12.5 9.5 18 20 6\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003eConforms to the shape of the curb\u003c\/li\u003e\n            \u003cli\u003e\n\u003csvg class=\"ck\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpolyline points=\"4 12.5 9.5 18 20 6\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003eReusable again and again\u003c\/li\u003e\n          \u003c\/ul\u003e\n          \u003ca class=\"cta\" href=\"#\" data-scroll-grid\u003eShop dandy curb sack\u003c\/a\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cul class=\"stats\"\u003e\n        \u003cli\u003e\n\u003cspan class=\"n\"\u003e2\u003c\/span\u003e\u003cspan class=\"lb\"\u003eOpenings covered\u003c\/span\u003e\n\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"n\"\u003e3\u003c\/span\u003e\u003cspan class=\"lb\"\u003eSizes stocked\u003c\/span\u003e\n\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"n\"\u003e1\u003c\/span\u003e\u003cspan class=\"lb\"\u003ePrice, all sizes\u003c\/span\u003e\n\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"intro\"\u003e\n      \u003cp class=\"kick\"\u003eChoose Your Size\u003c\/p\u003e\n      \u003ch2\u003eDandy Curb Sack Sediment Inlet Filters\u003c\/h2\u003e\n      \u003cdiv class=\"rd\"\u003e\n        \u003cp\u003eOn a combination inlet, sediment has two ways in: down through the grate, and along the gutter straight through the curb opening. Most inlet protection addresses one and leaves the other wide open. The rugged, patented \u003cstrong\u003eDandy Curb Sack\u003c\/strong\u003e covers both.\u003c\/p\u003e\n        \u003cp\u003eIt hangs beneath the grate like a sack, with an open top and internal cradle straps, and adds a \u003cstrong\u003ecylindrical portion that seats up against the curb\u003c\/strong\u003e to block the curb opening. Its unique design filters sediment-laden water with ease, and it can be reused again and again.\u003c\/p\u003e\n        \u003cp\u003eThree sizes, \u003cstrong\u003eall at the same price\u003c\/strong\u003e — so specify the one that fits the grate. The one thing to get right on install is orientation: the cylinder must end up against the curb face.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n#ld-csu{\n  --f:#33471F; --o:#5B7B30; --l:#8fc24a; --ink:#141a0c; --t:#1E1B1C; --b:#4a4744;\n  --cr:#F3F0E7; --ln:#e5e2d8;\n  font-family:Archivo,'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\n  font-weight:400; width:100%; box-sizing:border-box; color:var(--t);\n}\n.collection--description.rte, .productgrid--masthead .rte, .rte:has(\u003e #ld-csu){max-width:none !important;}\n.collection--masthead .collection--title, .productgrid--masthead .collection--title,\n.template-collection .collection--title{display:none !important;}\n#ld-csu *,#ld-csu *::before,#ld-csu *::after{box-sizing:border-box;}\n#ld-csu .in{width:1150px;max-width:100%;margin:0 auto;}\n#ld-csu .band{position:relative;border-radius:6px;overflow:hidden;background:var(--ink);}\n#ld-csu .band::before{content:\"\";position:absolute;inset:0;z-index:0;opacity:.5;\n  background-image:linear-gradient(rgba(143,194,74,.15) 2px,transparent 2px),linear-gradient(90deg,rgba(143,194,74,.15) 2px,transparent 2px);\n  background-size:44px 44px;}\n#ld-csu .band::after{content:\"\";position:absolute;inset:0;z-index:1;\n  background:linear-gradient(105deg,var(--ink) 0%,rgba(20,26,12,.74) 48%,rgba(51,71,31,.56) 100%);}\n#ld-csu .row{position:relative;z-index:2;display:grid;grid-template-columns:1.45fr 1fr;align-items:center;gap:28px;padding:36px 40px 30px;}\n#ld-csu .eyb{margin:0 0 12px;font-size:12px;letter-spacing:3px;text-transform:uppercase;font-weight:700;color:var(--l);}\n#ld-csu h1{margin:0 0 8px;font-family:'League Spartan','Archivo Narrow',sans-serif;font-size:42px;line-height:.93;letter-spacing:-.5px;font-weight:700;text-transform:uppercase;color:#fff;}\n#ld-csu .tag{margin:0 0 13px;font-family:'League Spartan','Archivo Narrow',sans-serif;font-size:17px;line-height:1;letter-spacing:.5px;text-transform:uppercase;font-weight:700;color:var(--l);}\n#ld-csu .sub{margin:0;max-width:470px;font-size:14.5px;line-height:1.5;color:#e4e8da;}\n#ld-csu .aside{display:flex;flex-direction:column;gap:11px;align-items:flex-start;}\n#ld-csu .bl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}\n#ld-csu .bl li{display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.4;color:#eef0e6;}\n#ld-csu .ck{width:17px;height:17px;flex:0 0 auto;margin-top:2px;fill:none;stroke:var(--l);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}\n#ld-csu .cta{margin-top:4px;background:var(--l);color:#1c2b0c;text-decoration:none;padding:11px 24px;border-radius:3px;font-size:13px;letter-spacing:.5px;text-transform:uppercase;font-weight:700;transition:background .15s ease;}\n#ld-csu .cta:hover{background:#a3d160;}\n#ld-csu .stats{position:relative;z-index:2;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);background:rgba(10,14,6,.62);border-top:1px solid rgba(143,194,74,.25);}\n#ld-csu .stats li{padding:15px 22px;border-right:1px solid rgba(255,255,255,.08);}\n#ld-csu .stats li:last-child{border-right:0;}\n#ld-csu .n{display:block;font-family:'League Spartan',sans-serif;font-size:25px;font-weight:700;line-height:1;color:var(--l);}\n#ld-csu .n em{font-style:normal;font-size:13px;margin-left:2px;}\n#ld-csu .lb{display:block;margin-top:6px;font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:#aeb6a2;}\n#ld-csu .intro{padding:38px 4px 8px;}\n#ld-csu .kick{margin:0 0 10px;font-size:12px;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--o);}\n#ld-csu h2{margin:0 0 18px;font-family:'League Spartan','Archivo Narrow',sans-serif;font-size:30px;line-height:1.08;font-weight:700;color:var(--t);}\n#ld-csu .rd p{margin:0 0 14px;font-size:15.5px;line-height:1.65;color:var(--b);}\n#ld-csu .rd p:last-child{margin-bottom:0;}\n@media (max-width:900px){\n  #ld-csu h1{font-size:36px;} #ld-csu .row{grid-template-columns:1fr;gap:20px;padding:30px 28px 24px;}\n  #ld-csu h2{font-size:26px;} #ld-csu .n{font-size:22px;}\n}\n@media (max-width:560px){\n  #ld-csu h1{font-size:29px;} #ld-csu .eyb{font-size:11px;letter-spacing:2px;}\n  #ld-csu .row{padding:26px 22px 20px;} #ld-csu .cta{width:100%;text-align:center;}\n  #ld-csu .stats{grid-template-columns:1fr;}\n  #ld-csu .stats li{border-right:0;border-bottom:1px solid rgba(255,255,255,.08);}\n  #ld-csu .stats li:last-child{border-bottom:0;}\n  #ld-csu .intro{padding:28px 2px 4px;}\n}\n@media (prefers-reduced-motion:reduce){#ld-csu .cta{transition:none;}}\n.template-collection .productgrid--outer{display:block!important;grid-template-columns:none!important;max-width:1150px!important;margin:0 auto!important;padding:0!important}\n.template-collection .grid--collection-sidebar{display:none!important}\n.template-collection .productgrid--wrapper{width:100%!important;margin:0!important}\n\u003c\/style\u003e\n\n\u003cscript\u003e\n(function(){\n  var b=document.querySelector('#ld-csu [data-scroll-grid]');\n  if(!b)return;\n  b.addEventListener('click',function(e){\n    e.preventDefault();\n    var g=document.querySelector('.productgrid--items, .productgrid--wrapper, [data-productgrid-items]');\n    if(g){g.scrollIntoView({behavior:'smooth',block:'start'});}\n  });\n})();\n\u003c\/script\u003e","products":[{"product_id":"dandy-curb-sack-24-x-24-sediment-inlet-filter","title":"Dandy Curb Sack - 24\" x 24\" - Sediment Inlet Filter","description":"\u003c!-- ================================================================\n     LANDSCAPE DISCOUNT — HDPE Tree Root Barrier Roll\n     INTRO BLOCK  ·  paste into the Shopify product DESCRIPTION field\n     Scope: #ld-dcs-intro\n     ================================================================ --\u003e\n\n\u003cdiv id=\"ld-dcs-intro\"\u003e\n\u003cstyle\u003e\n#ld-dcs-intro{\n  --forest:#33471F; --olive:#5B7B30; --leaf:#8FC24A; --cream:#F3F0E7;\n  --ink:#1E1B1C; --body:#4a4744; --muted:#7A7568; --hair:#e5e2d8; --tint:#F7F5EF;\n  --hex:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);\n  font-family:Archivo,'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\n  color:var(--body); font-size:16px; line-height:1.65;\n}\n#ld-dcs-intro *{box-sizing:border-box;}\n\n#ld-dcs-intro .ld-kicker{\n  font-family:'League Spartan','Archivo Narrow',sans-serif; font-weight:700;\n  text-transform:uppercase; letter-spacing:2px; font-size:12px;\n  color:var(--olive); margin:0 0 10px;\n}\n#ld-dcs-intro .ld-lead{\n  margin:0 0 22px; font-size:17px; line-height:1.62; color:var(--body);\n}\n#ld-dcs-intro .ld-lead strong{color:var(--ink); font-weight:600;}\n\n\/* ---- spec cards ---- *\/\n#ld-dcs-intro .ld-rail{\n  display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:0 0 14px;\n}\n#ld-dcs-intro .ld-cell{\n  position:relative; background:#fff; border:1px solid var(--hair);\n  border-top:3px solid var(--olive); padding:15px 15px 14px;\n}\n#ld-dcs-intro .ld-cell::before{\n  content:\"\"; position:absolute; right:12px; top:11px;\n  width:8px; height:8px; background:var(--leaf); clip-path:var(--hex);\n}\n#ld-dcs-intro .ld-cell dt{\n  font-family:'League Spartan','Archivo Narrow',sans-serif; font-weight:700;\n  text-transform:uppercase; letter-spacing:1.4px; font-size:10px;\n  color:var(--olive); margin:0 0 9px; padding-right:22px;}\n#ld-dcs-intro .ld-cell dd{\n  margin:0; font-family:'League Spartan','Archivo Narrow',sans-serif;\n  font-weight:700; font-size:clamp(17px,1.5vw,20px); line-height:1.1;\n  color:var(--forest); letter-spacing:-.01em; padding-right:6px;}\n#ld-dcs-intro .ld-cell dd span{\n  display:block; font-family:Archivo,sans-serif; font-weight:400;\n  font-size:12px; line-height:1.4; color:var(--muted);\n  letter-spacing:0; margin-top:8px;\n}\n\n\/* ---- trust strip ---- *\/\n#ld-dcs-intro .ld-strip{\n  display:flex; flex-wrap:wrap; gap:8px 26px;\n  border-top:1px solid var(--hair); padding-top:13px; margin:0;\n  list-style:none;\n}\n#ld-dcs-intro .ld-strip li{\n  display:flex; align-items:center; gap:8px;\n  font-size:13.5px; color:var(--ink);\n}\n#ld-dcs-intro .ld-strip li::before{\n  content:\"\"; flex:0 0 auto; width:9px; height:9px;\n  background:var(--olive); clip-path:var(--hex);\n}\n\n@media (max-width:900px){\n  #ld-dcs-intro .ld-rail{grid-template-columns:1fr;}\n}\n@media (max-width:760px){\n  #ld-dcs-intro .ld-lead{font-size:16px;}\n  #ld-dcs-intro .ld-cell dd{font-size:18px;}\n  #ld-dcs-intro .ld-strip{gap:8px 18px;}\n}\n\u003c\/style\u003e\n\n  \u003cp class=\"ld-kicker\"\u003eDandy · Grate + Curb Opening · 24″ × 24″\u003c\/p\u003e\n\n  \u003cp class=\"ld-lead\"\u003e\n    \u003cstrong\u003eDandy Curb Sack sediment inlet filter\u003c\/strong\u003e for a \u003cstrong\u003e24″ × 24″\u003c\/strong\u003e grate. A square 24-inch grate, the smallest size stocked. The\n    open-top sack hangs beneath the grate on internal cradle straps, and a cylindrical portion seats\n    against the curb so \u003cstrong\u003eboth routes into the inlet are filtered\u003c\/strong\u003e by one unit.\n  \u003c\/p\u003e\n\n  \u003cdl class=\"ld-rail\"\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eGrate Size\u003c\/dt\u003e\n      \u003cdd\u003e24″ × 24″\u003cspan\u003eFits the grate it hangs from\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eModel\u003c\/dt\u003e\n      \u003cdd\u003eDCS-24-24\u003cspan\u003eBrand: Dandy\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eCovers\u003c\/dt\u003e\n      \u003cdd\u003eBoth\u003cspan\u003eGrate and curb opening\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n  \u003c\/dl\u003e\n\n  \u003cul class=\"ld-strip\"\u003e\n    \u003cli\u003ePatented curb-filtering design\u003c\/li\u003e\n    \u003cli\u003eCylinder seats against the curb\u003c\/li\u003e\n    \u003cli\u003eConforms to the curb shape\u003c\/li\u003e\n    \u003cli\u003eReusable — install, inspect, reuse\u003c\/li\u003e\n    \u003cli\u003eFree shipping on all orders\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n\u003c\/div\u003e","brand":"Dandy","offers":[{"title":"Default Title","offer_id":54831182676340,"sku":"DCS-24-24","price":178.86,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1006\/1883\/0196\/files\/DCS-24-24-2.jpg?v=1782096514"},{"product_id":"dandy-curb-sack-40-x-40-sediment-inlet-filter","title":"Dandy Curb Sack - 40\" x 40\" - Sediment Inlet Filter","description":"\u003c!-- ================================================================\n     LANDSCAPE DISCOUNT — HDPE Tree Root Barrier Roll\n     INTRO BLOCK  ·  paste into the Shopify product DESCRIPTION field\n     Scope: #ld-dcs-intro\n     ================================================================ --\u003e\n\n\u003cdiv id=\"ld-dcs-intro\"\u003e\n\u003cstyle\u003e\n#ld-dcs-intro{\n  --forest:#33471F; --olive:#5B7B30; --leaf:#8FC24A; --cream:#F3F0E7;\n  --ink:#1E1B1C; --body:#4a4744; --muted:#7A7568; --hair:#e5e2d8; --tint:#F7F5EF;\n  --hex:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);\n  font-family:Archivo,'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\n  color:var(--body); font-size:16px; line-height:1.65;\n}\n#ld-dcs-intro *{box-sizing:border-box;}\n\n#ld-dcs-intro .ld-kicker{\n  font-family:'League Spartan','Archivo Narrow',sans-serif; font-weight:700;\n  text-transform:uppercase; letter-spacing:2px; font-size:12px;\n  color:var(--olive); margin:0 0 10px;\n}\n#ld-dcs-intro .ld-lead{\n  margin:0 0 22px; font-size:17px; line-height:1.62; color:var(--body);\n}\n#ld-dcs-intro .ld-lead strong{color:var(--ink); font-weight:600;}\n\n\/* ---- spec cards ---- *\/\n#ld-dcs-intro .ld-rail{\n  display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:0 0 14px;\n}\n#ld-dcs-intro .ld-cell{\n  position:relative; background:#fff; border:1px solid var(--hair);\n  border-top:3px solid var(--olive); padding:15px 15px 14px;\n}\n#ld-dcs-intro .ld-cell::before{\n  content:\"\"; position:absolute; right:12px; top:11px;\n  width:8px; height:8px; background:var(--leaf); clip-path:var(--hex);\n}\n#ld-dcs-intro .ld-cell dt{\n  font-family:'League Spartan','Archivo Narrow',sans-serif; font-weight:700;\n  text-transform:uppercase; letter-spacing:1.4px; font-size:10px;\n  color:var(--olive); margin:0 0 9px; padding-right:22px;}\n#ld-dcs-intro .ld-cell dd{\n  margin:0; font-family:'League Spartan','Archivo Narrow',sans-serif;\n  font-weight:700; font-size:clamp(17px,1.5vw,20px); line-height:1.1;\n  color:var(--forest); letter-spacing:-.01em; padding-right:6px;}\n#ld-dcs-intro .ld-cell dd span{\n  display:block; font-family:Archivo,sans-serif; font-weight:400;\n  font-size:12px; line-height:1.4; color:var(--muted);\n  letter-spacing:0; margin-top:8px;\n}\n\n\/* ---- trust strip ---- *\/\n#ld-dcs-intro .ld-strip{\n  display:flex; flex-wrap:wrap; gap:8px 26px;\n  border-top:1px solid var(--hair); padding-top:13px; margin:0;\n  list-style:none;\n}\n#ld-dcs-intro .ld-strip li{\n  display:flex; align-items:center; gap:8px;\n  font-size:13.5px; color:var(--ink);\n}\n#ld-dcs-intro .ld-strip li::before{\n  content:\"\"; flex:0 0 auto; width:9px; height:9px;\n  background:var(--olive); clip-path:var(--hex);\n}\n\n@media (max-width:900px){\n  #ld-dcs-intro .ld-rail{grid-template-columns:1fr;}\n}\n@media (max-width:760px){\n  #ld-dcs-intro .ld-lead{font-size:16px;}\n  #ld-dcs-intro .ld-cell dd{font-size:18px;}\n  #ld-dcs-intro .ld-strip{gap:8px 18px;}\n}\n\u003c\/style\u003e\n\n  \u003cp class=\"ld-kicker\"\u003eDandy · Grate + Curb Opening · 40″ × 40″\u003c\/p\u003e\n\n  \u003cp class=\"ld-lead\"\u003e\n    \u003cstrong\u003eDandy Curb Sack sediment inlet filter\u003c\/strong\u003e for a \u003cstrong\u003e40″ × 40″\u003c\/strong\u003e grate. A square 40-inch grate, common on larger combination inlets. The\n    open-top sack hangs beneath the grate on internal cradle straps, and a cylindrical portion seats\n    against the curb so \u003cstrong\u003eboth routes into the inlet are filtered\u003c\/strong\u003e by one unit.\n  \u003c\/p\u003e\n\n  \u003cdl class=\"ld-rail\"\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eGrate Size\u003c\/dt\u003e\n      \u003cdd\u003e40″ × 40″\u003cspan\u003eFits the grate it hangs from\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eModel\u003c\/dt\u003e\n      \u003cdd\u003eDCS-40-40\u003cspan\u003eBrand: Dandy\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eCovers\u003c\/dt\u003e\n      \u003cdd\u003eBoth\u003cspan\u003eGrate and curb opening\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n  \u003c\/dl\u003e\n\n  \u003cul class=\"ld-strip\"\u003e\n    \u003cli\u003ePatented curb-filtering design\u003c\/li\u003e\n    \u003cli\u003eCylinder seats against the curb\u003c\/li\u003e\n    \u003cli\u003eConforms to the curb shape\u003c\/li\u003e\n    \u003cli\u003eReusable — install, inspect, reuse\u003c\/li\u003e\n    \u003cli\u003eFree shipping on all orders\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n\u003c\/div\u003e","brand":"Dandy","offers":[{"title":"Default Title","offer_id":54831182709108,"sku":"DCS-40-40","price":178.86,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1006\/1883\/0196\/files\/DCS-40-40-2.jpg?v=1782096517"},{"product_id":"dandy-curb-sack-50-x-50-sediment-inlet-filter","title":"Dandy Curb Sack - 50\" x 50\" - Sediment Inlet Filter","description":"\u003c!-- ================================================================\n     LANDSCAPE DISCOUNT — HDPE Tree Root Barrier Roll\n     INTRO BLOCK  ·  paste into the Shopify product DESCRIPTION field\n     Scope: #ld-dcs-intro\n     ================================================================ --\u003e\n\n\u003cdiv id=\"ld-dcs-intro\"\u003e\n\u003cstyle\u003e\n#ld-dcs-intro{\n  --forest:#33471F; --olive:#5B7B30; --leaf:#8FC24A; --cream:#F3F0E7;\n  --ink:#1E1B1C; --body:#4a4744; --muted:#7A7568; --hair:#e5e2d8; --tint:#F7F5EF;\n  --hex:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);\n  font-family:Archivo,'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\n  color:var(--body); font-size:16px; line-height:1.65;\n}\n#ld-dcs-intro *{box-sizing:border-box;}\n\n#ld-dcs-intro .ld-kicker{\n  font-family:'League Spartan','Archivo Narrow',sans-serif; font-weight:700;\n  text-transform:uppercase; letter-spacing:2px; font-size:12px;\n  color:var(--olive); margin:0 0 10px;\n}\n#ld-dcs-intro .ld-lead{\n  margin:0 0 22px; font-size:17px; line-height:1.62; color:var(--body);\n}\n#ld-dcs-intro .ld-lead strong{color:var(--ink); font-weight:600;}\n\n\/* ---- spec cards ---- *\/\n#ld-dcs-intro .ld-rail{\n  display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:0 0 14px;\n}\n#ld-dcs-intro .ld-cell{\n  position:relative; background:#fff; border:1px solid var(--hair);\n  border-top:3px solid var(--olive); padding:15px 15px 14px;\n}\n#ld-dcs-intro .ld-cell::before{\n  content:\"\"; position:absolute; right:12px; top:11px;\n  width:8px; height:8px; background:var(--leaf); clip-path:var(--hex);\n}\n#ld-dcs-intro .ld-cell dt{\n  font-family:'League Spartan','Archivo Narrow',sans-serif; font-weight:700;\n  text-transform:uppercase; letter-spacing:1.4px; font-size:10px;\n  color:var(--olive); margin:0 0 9px; padding-right:22px;}\n#ld-dcs-intro .ld-cell dd{\n  margin:0; font-family:'League Spartan','Archivo Narrow',sans-serif;\n  font-weight:700; font-size:clamp(17px,1.5vw,20px); line-height:1.1;\n  color:var(--forest); letter-spacing:-.01em; padding-right:6px;}\n#ld-dcs-intro .ld-cell dd span{\n  display:block; font-family:Archivo,sans-serif; font-weight:400;\n  font-size:12px; line-height:1.4; color:var(--muted);\n  letter-spacing:0; margin-top:8px;\n}\n\n\/* ---- trust strip ---- *\/\n#ld-dcs-intro .ld-strip{\n  display:flex; flex-wrap:wrap; gap:8px 26px;\n  border-top:1px solid var(--hair); padding-top:13px; margin:0;\n  list-style:none;\n}\n#ld-dcs-intro .ld-strip li{\n  display:flex; align-items:center; gap:8px;\n  font-size:13.5px; color:var(--ink);\n}\n#ld-dcs-intro .ld-strip li::before{\n  content:\"\"; flex:0 0 auto; width:9px; height:9px;\n  background:var(--olive); clip-path:var(--hex);\n}\n\n@media (max-width:900px){\n  #ld-dcs-intro .ld-rail{grid-template-columns:1fr;}\n}\n@media (max-width:760px){\n  #ld-dcs-intro .ld-lead{font-size:16px;}\n  #ld-dcs-intro .ld-cell dd{font-size:18px;}\n  #ld-dcs-intro .ld-strip{gap:8px 18px;}\n}\n\u003c\/style\u003e\n\n  \u003cp class=\"ld-kicker\"\u003eDandy · Grate + Curb Opening · 50″ × 50″\u003c\/p\u003e\n\n  \u003cp class=\"ld-lead\"\u003e\n    \u003cstrong\u003eDandy Curb Sack sediment inlet filter\u003c\/strong\u003e for a \u003cstrong\u003e50″ × 50″\u003c\/strong\u003e grate. The largest size stocked, for wide combination inlets. The\n    open-top sack hangs beneath the grate on internal cradle straps, and a cylindrical portion seats\n    against the curb so \u003cstrong\u003eboth routes into the inlet are filtered\u003c\/strong\u003e by one unit.\n  \u003c\/p\u003e\n\n  \u003cdl class=\"ld-rail\"\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eGrate Size\u003c\/dt\u003e\n      \u003cdd\u003e50″ × 50″\u003cspan\u003eFits the grate it hangs from\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eModel\u003c\/dt\u003e\n      \u003cdd\u003eDCS-50-50\u003cspan\u003eBrand: Dandy\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ld-cell\"\u003e\n      \u003cdt\u003eCovers\u003c\/dt\u003e\n      \u003cdd\u003eBoth\u003cspan\u003eGrate and curb opening\u003c\/span\u003e\n\u003c\/dd\u003e\n    \u003c\/div\u003e\n  \u003c\/dl\u003e\n\n  \u003cul class=\"ld-strip\"\u003e\n    \u003cli\u003ePatented curb-filtering design\u003c\/li\u003e\n    \u003cli\u003eCylinder seats against the curb\u003c\/li\u003e\n    \u003cli\u003eConforms to the curb shape\u003c\/li\u003e\n    \u003cli\u003eReusable — install, inspect, reuse\u003c\/li\u003e\n    \u003cli\u003eFree shipping on all orders\u003c\/li\u003e\n  \u003c\/ul\u003e\n\n\u003c\/div\u003e","brand":"Dandy","offers":[{"title":"Default Title","offer_id":54831182774644,"sku":"DCS-50-50","price":178.86,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1006\/1883\/0196\/files\/DCS-50-50-2.jpg?v=1782096520"}],"url":"https:\/\/landscapediscount.com\/collections\/dandy-curb-sack.oembed","provider":"Landscape Discount","version":"1.0","type":"link"}