{"product_id":"carl-s-place-golf-room-floor-tile-kit","title":"Carl’s Place Golf Room Flooring Kit featuring Big Moss Commander Turf","description":"\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow+Condensed:wght@600;700;800;900\u0026amp;family=Inter:wght@400;500;600;700\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\u003cstyle\u003e\n.esg-carlsfloorkit-pdp { font-family: 'Inter', system-ui, -apple-system, sans-serif; color:#2a3756; }\n.esg-carlsfloorkit-pdp .esg-inner { max-width:1400px; margin:0 auto; padding:72px 48px; box-sizing:border-box; }\n.esg-carlsfloorkit-pdp .esg-section { padding:0; }\n.esg-carlsfloorkit-pdp .esg-section--white { background:#ffffff; }\n.esg-carlsfloorkit-pdp .esg-section--light { background:#F8F8F8; }\n.esg-carlsfloorkit-pdp .esg-section--dark { background:#0A1A3A; }\n.esg-carlsfloorkit-pdp .esg-section--dark p, .esg-carlsfloorkit-pdp .esg-section--dark strong { color:#E6ECF7; }\n.esg-carlsfloorkit-pdp .esg-section--dark a { color:#ffffff; }\n.esg-carlsfloorkit-pdp .esg-eyebrow { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:13px; letter-spacing:0.18em; text-transform:uppercase; color:#6B7390; display:block; margin-bottom:10px; }\n.esg-carlsfloorkit-pdp .esg-section--dark .esg-eyebrow { color:#7A9CC0; }\n.esg-carlsfloorkit-pdp h3 { font-family:'Barlow Condensed', sans-serif; font-weight:800; text-transform:uppercase; letter-spacing:-0.01em; font-size:clamp(22px,2.4vw,28px); margin:0 0 16px; color:#0A1A3A; }\n.esg-carlsfloorkit-pdp .esg-section--dark h3 { color:#ffffff; }\n.esg-carlsfloorkit-pdp h4 { font-family:'Barlow Condensed', sans-serif; font-weight:700; letter-spacing:0.04em; font-size:18px; margin:0 0 8px; color:#0A1A3A; }\n.esg-carlsfloorkit-pdp .esg-section--dark h4 { color:#ffffff; }\n.esg-carlsfloorkit-pdp .esg-lede { font-size:18px; color:#2a3756; max-width:900px; line-height:1.6; margin:0 0 32px; }\n.esg-carlsfloorkit-pdp .esg-section--dark .esg-lede { color:#E6ECF7; }\n.esg-carlsfloorkit-pdp p { line-height:1.6; }\n.esg-carlsfloorkit-pdp .esg-badge { display:inline-block; border:1px solid #0A1A3A; border-radius:999px; padding:6px 16px; font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:12px; letter-spacing:0.12em; text-transform:uppercase; color:#0A1A3A; margin-bottom:24px; }\n\n\/* ---- PDP hero \/ buy box (this is the \"product page\" area) ---- *\/\n.esg-carlsfloorkit-pdp .esg-pdp-hero { display:grid; grid-template-columns:1fr 460px; gap:56px; align-items:start; }\n.esg-carlsfloorkit-pdp .esg-pdp-gallery { position:sticky; top:24px; }\n.esg-carlsfloorkit-pdp .esg-pdp-gallery-main { width:100%; border-radius:8px; background:#F8F8F8; object-fit:contain; aspect-ratio:1\/1; }\n.esg-carlsfloorkit-pdp .esg-pdp-gallery-thumbs { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-top:10px; }\n.esg-carlsfloorkit-pdp .esg-pdp-gallery-thumbs img { width:100%; aspect-ratio:1\/1; object-fit:contain; background:#F8F8F8; border:1px solid #E6E9F0; border-radius:6px; cursor:default; }\n.esg-carlsfloorkit-pdp .esg-pdp-buybox h1.esg-pdp-title { font-family:'Barlow Condensed', sans-serif; font-weight:800; text-transform:uppercase; letter-spacing:-0.01em; font-size:clamp(26px,3vw,34px); margin:0 0 10px; color:#0A1A3A; }\n.esg-carlsfloorkit-pdp .esg-pdp-vendor { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:13px; letter-spacing:0.14em; text-transform:uppercase; color:#6B7390; margin-bottom:14px; display:block; }\n.esg-carlsfloorkit-pdp .esg-pdp-price-block { display:flex; align-items:baseline; gap:12px; margin-bottom:6px; }\n.esg-carlsfloorkit-pdp .esg-pdp-price { font-family:'Barlow Condensed', sans-serif; font-weight:800; font-size:32px; color:#0A1A3A; }\n.esg-carlsfloorkit-pdp .esg-pdp-price-compare { font-size:16px; color:#6B7390; text-decoration:line-through; }\n.esg-carlsfloorkit-pdp .esg-pdp-price-note { font-size:13px; color:#6B7390; margin-bottom:24px; }\n.esg-carlsfloorkit-pdp .esg-pdp-desc { font-size:15px; color:#2a3756; margin-bottom:24px; }\n.esg-carlsfloorkit-pdp .esg-pdp-divider { border-top:1px solid #E6E9F0; margin:24px 0; }\n\n\/* ---- Component line rows (acts like variant\/option selectors) ---- *\/\n.esg-carlsfloorkit-pdp .esg-kit-line { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 0; border-bottom:1px solid #E6E9F0; }\n.esg-carlsfloorkit-pdp .esg-kit-line:first-of-type { padding-top:0; }\n.esg-carlsfloorkit-pdp .esg-kit-line-info { flex:1; min-width:0; }\n.esg-carlsfloorkit-pdp .esg-kit-line-title { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:15px; color:#0A1A3A; letter-spacing:0.01em; text-transform:uppercase; margin-bottom:2px; }\n.esg-carlsfloorkit-pdp .esg-kit-line-sub { font-size:13px; color:#6B7390; }\n.esg-carlsfloorkit-pdp .esg-kit-line-price { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:15px; color:#0A1A3A; width:74px; text-align:right; flex-shrink:0; }\n.esg-carlsfloorkit-pdp .esg-qty-stepper { display:flex; align-items:center; border:1px solid #0A1A3A; border-radius:4px; overflow:hidden; flex-shrink:0; }\n.esg-carlsfloorkit-pdp .esg-qty-btn { background:#ffffff; border:none; width:32px; height:32px; font-size:16px; font-weight:700; color:#0A1A3A; cursor:pointer; line-height:1; }\n.esg-carlsfloorkit-pdp .esg-qty-btn:hover { background:#F0F3F8; }\n.esg-carlsfloorkit-pdp .esg-qty-input { width:38px; height:32px; border:none; border-left:1px solid #E6E9F0; border-right:1px solid #E6E9F0; text-align:center; font-family:'Inter', sans-serif; font-weight:600; font-size:14px; color:#0A1A3A; -moz-appearance:textfield; }\n.esg-carlsfloorkit-pdp .esg-qty-input::-webkit-outer-spin-button,\n.esg-carlsfloorkit-pdp .esg-qty-input::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }\n.esg-carlsfloorkit-pdp .esg-kit-line--turf { align-items:flex-start; flex-wrap:wrap; }\n.esg-carlsfloorkit-pdp .esg-kit-line--turf .esg-kit-line-info { flex:1 1 100%; margin-bottom:10px; }\n.esg-carlsfloorkit-pdp .esg-turf-select { flex:1; min-width:180px; border:1px solid #0A1A3A; border-radius:4px; height:38px; padding:0 10px; font-family:'Inter', sans-serif; font-size:13px; color:#0A1A3A; background:#ffffff; }\n.esg-carlsfloorkit-pdp .esg-turf-controls { display:flex; align-items:center; gap:12px; width:100%; }\n.esg-carlsfloorkit-pdp .esg-turf-price { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:15px; color:#0A1A3A; width:80px; text-align:right; flex-shrink:0; }\n.esg-carlsfloorkit-pdp .esg-kit-optional-tag { display:inline-block; font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:10px; letter-spacing:0.1em; text-transform:uppercase; color:#6B7390; border:1px solid #E6E9F0; border-radius:999px; padding:2px 8px; margin-left:8px; }\n.esg-carlsfloorkit-pdp .esg-kit-group-label { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:12px; letter-spacing:0.14em; text-transform:uppercase; color:#0A1A3A; margin:26px 0 4px; padding-top:18px; border-top:1px solid #E6E9F0; display:flex; align-items:center; gap:8px; }\n.esg-carlsfloorkit-pdp .esg-kit-group-label:first-child { margin-top:0; padding-top:0; border-top:none; }\n.esg-carlsfloorkit-pdp .esg-kit-group-vendor { color:#6B7390; font-weight:600; letter-spacing:0.08em; }\n.esg-carlsfloorkit-pdp .esg-system-pair { display:grid; grid-template-columns:1fr auto 1fr; gap:20px; align-items:center; margin-top:8px; }\n.esg-carlsfloorkit-pdp .esg-system-pair-card { background:#ffffff; border:1px solid #E6E9F0; border-top:3px solid #0A1A3A; padding:24px; }\n.esg-carlsfloorkit-pdp .esg-system-pair-vendor { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:12px; letter-spacing:0.12em; text-transform:uppercase; color:#6B7390; margin-bottom:6px; display:block; }\n.esg-carlsfloorkit-pdp .esg-system-pair-plus { font-family:'Barlow Condensed', sans-serif; font-weight:800; font-size:28px; color:#0A1A3A; text-align:center; }\n\n\/* ---- Live total + add to cart ---- *\/\n.esg-carlsfloorkit-pdp .esg-kit-total-row { display:flex; align-items:baseline; justify-content:space-between; padding:20px 0 4px; }\n.esg-carlsfloorkit-pdp .esg-kit-total-label { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:14px; letter-spacing:0.08em; text-transform:uppercase; color:#6B7390; }\n.esg-carlsfloorkit-pdp .esg-kit-total-price { font-family:'Barlow Condensed', sans-serif; font-weight:800; font-size:28px; color:#0A1A3A; }\n.esg-carlsfloorkit-pdp .esg-kit-total-note { font-size:13px; color:#6B7390; margin-bottom:20px; }\n.esg-carlsfloorkit-pdp .esg-atc-btn { display:block; width:100%; box-sizing:border-box; text-align:center; background:#0A1A3A; color:#ffffff !important; text-decoration:none; font-family:'Barlow Condensed', sans-serif; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; font-size:16px; padding:16px; border:none; border-radius:4px; cursor:pointer; }\n.esg-carlsfloorkit-pdp .esg-atc-btn:hover { background:#132a5c; }\n.esg-carlsfloorkit-pdp .esg-atc-btn:disabled { background:#9AA6BF; cursor:not-allowed; }\n.esg-carlsfloorkit-pdp .esg-atc-status { font-size:13px; margin-top:10px; min-height:18px; }\n.esg-carlsfloorkit-pdp .esg-atc-status--ok { color:#0A1A3A; font-weight:600; }\n.esg-carlsfloorkit-pdp .esg-atc-status--err { color:#8a2b12; font-weight:600; }\n.esg-carlsfloorkit-pdp .esg-pdp-trust-line { display:flex; gap:18px; flex-wrap:wrap; margin-top:20px; font-size:12px; color:#6B7390; }\n\n\/* ---- Stat tiles \/ feature cards (shared with other PDPs) ---- *\/\n.esg-carlsfloorkit-pdp .esg-stat-row { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:8px; }\n.esg-carlsfloorkit-pdp .esg-stat-tile { background:#ffffff; border:1px solid #E6E9F0; border-top:3px solid #0A1A3A; padding:16px 18px; }\n.esg-carlsfloorkit-pdp .esg-stat-num { font-family:'Barlow Condensed', sans-serif; font-weight:800; font-size:24px; color:#0A1A3A; }\n.esg-carlsfloorkit-pdp .esg-stat-label { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:#6B7390; margin-top:4px; }\n.esg-carlsfloorkit-pdp .esg-feature-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }\n.esg-carlsfloorkit-pdp .esg-feature-card { background:#ffffff; border:1px solid #E6E9F0; border-left:3px solid #0A1A3A; padding:24px; }\n.esg-carlsfloorkit-pdp table.esg-specs { width:100%; border-collapse:collapse; background:#ffffff; }\n.esg-carlsfloorkit-pdp table.esg-specs th, .esg-carlsfloorkit-pdp table.esg-specs td { text-align:left; padding:12px 16px; border-bottom:1px solid #E6E9F0; font-size:15px; }\n.esg-carlsfloorkit-pdp table.esg-specs th { background:#0A1A3A; color:#ffffff; font-family:'Barlow Condensed', sans-serif; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; font-size:12px; }\n.esg-carlsfloorkit-pdp table.esg-specs tr:nth-child(even) td { background:#F8F8F8; }\n.esg-carlsfloorkit-pdp .esg-note { font-size:13px; color:#6B7390; margin-top:14px; }\n.esg-carlsfloorkit-pdp .esg-crosslink { border:1px solid #0A1A3A; background:#F0F3F8; border-radius:6px; padding:28px 32px; margin-top:32px; display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; }\n.esg-carlsfloorkit-pdp .esg-crosslink p { margin:4px 0 0; font-size:15px; color:#2a3756; }\n.esg-carlsfloorkit-pdp .esg-btn { display:inline-block; background:#0A1A3A; color:#ffffff !important; text-decoration:none; font-family:'Barlow Condensed', sans-serif; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; font-size:14px; padding:14px 28px; border-radius:4px; white-space:nowrap; }\n.esg-carlsfloorkit-pdp .esg-btn--white { background:#ffffff; color:#0A1A3A !important; }\n.esg-carlsfloorkit-pdp details { border-bottom:1px solid #E6E9F0; padding:16px 0; }\n.esg-carlsfloorkit-pdp summary { font-family:'Barlow Condensed', sans-serif; font-weight:700; font-size:16px; color:#0A1A3A; cursor:pointer; }\n.esg-carlsfloorkit-pdp details p { margin:12px 0 0; color:#2a3756; }\n.esg-carlsfloorkit-pdp .esg-closing { text-align:center; }\n.esg-carlsfloorkit-pdp .esg-closing .esg-lede { margin:0 auto 28px; }\n\n@media (max-width:900px) {\n  .esg-carlsfloorkit-pdp .esg-inner { padding:56px 24px; }\n  .esg-carlsfloorkit-pdp .esg-pdp-hero { grid-template-columns:1fr; }\n  .esg-carlsfloorkit-pdp .esg-pdp-gallery { position:static; }\n  .esg-carlsfloorkit-pdp .esg-stat-row { grid-template-columns:repeat(2,1fr); }\n  .esg-carlsfloorkit-pdp .esg-feature-grid { grid-template-columns:1fr; }\n  .esg-carlsfloorkit-pdp .esg-crosslink { flex-direction:column; align-items:flex-start; }\n  .esg-carlsfloorkit-pdp .esg-kit-line { flex-wrap:wrap; }\n  .esg-carlsfloorkit-pdp .esg-system-pair { grid-template-columns:1fr; }\n  .esg-carlsfloorkit-pdp .esg-system-pair-plus { transform:rotate(90deg); }\n}\n@media (max-width:560px) {\n  .esg-carlsfloorkit-pdp .esg-stat-row { grid-template-columns:1fr; }\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"esg-carlsfloorkit-pdp\" id=\"esg-floorkit-root\"\u003e\n\n  \u003c!-- SECTION 1: PDP-style hero with buy box --\u003e\n  \u003csection class=\"esg-section esg-section--white\"\u003e\n    \u003cdiv class=\"esg-inner\"\u003e\n      \u003cspan class=\"esg-badge\"\u003eTwo-Brand Combo — Buy the Full System\u003c\/span\u003e\n      \u003cdiv class=\"esg-pdp-hero\"\u003e\n\n        \u003c!-- Gallery --\u003e\n        \u003cdiv class=\"esg-pdp-gallery\"\u003e\n          \u003cimg class=\"esg-pdp-gallery-main\" id=\"esg-kit-main-img\" src=\"https:\/\/shop.carlofet.com\/media\/catalog\/product\/f\/l\/floor-tile-edge-hero.jpg\" alt=\"Carl's Place Golf Room Floor Tile Kit\"\u003e\n          \u003cdiv class=\"esg-pdp-gallery-thumbs\"\u003e\n            \u003cimg src=\"https:\/\/shop.carlofet.com\/media\/catalog\/product\/f\/l\/floor-tile-edge_1_.jpg\" alt=\"Floor tile, 5-pack\"\u003e\n            \u003cimg src=\"https:\/\/shop.carlofet.com\/media\/catalog\/product\/f\/l\/floor-tile-edge_7_.jpg\" alt=\"Floor tile, 6-pack\"\u003e\n            \u003cimg src=\"https:\/\/shop.carlofet.com\/media\/catalog\/product\/l\/e\/length_l_crop.png\" alt=\"Floor edge piece\"\u003e\n            \u003cimg src=\"https:\/\/shop.carlofet.com\/media\/catalog\/product\/c\/o\/corner_pieces_4.png\" alt=\"Floor edge corner piece\"\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003c!-- Buy box --\u003e\n        \u003cdiv class=\"esg-pdp-buybox\"\u003e\n          \u003cspan class=\"esg-pdp-vendor\"\u003eCarl’s Place + Big Moss Golf\u003c\/span\u003e\n          \u003ch1 class=\"esg-pdp-title\"\u003eComplete Golf Simulator Flooring System\u003c\/h1\u003e\n          \u003cdiv class=\"esg-pdp-price-block\"\u003e\n            \u003cspan class=\"esg-pdp-price\" id=\"esg-kit-header-price\"\u003e$704.75\u003c\/span\u003e\n          \u003c\/div\u003e\n          \u003cp class=\"esg-pdp-price-note\"\u003eStarter system total shown below — adjust quantities and turf size to match your room, then add the full system to the cart in one step.\u003c\/p\u003e\n          \u003cp class=\"esg-pdp-desc\"\u003eCarl’s Place interlocking subfloor tiles, edge pieces, and corners pair with a Big Moss Commander 245G hitting surface to form a complete flooring system — a level, impact-ready subfloor topped with a true-roll putting and hitting turf. Set quantities and turf size below and add the full system to the cart at once.\u003c\/p\u003e\n\n          \u003cdiv class=\"esg-pdp-divider\"\u003e\u003c\/div\u003e\n\n          \u003c!-- Component lines with quantity steppers --\u003e\n          \u003cdiv id=\"esg-kit-lines\"\u003e\n            \u003cdiv class=\"esg-kit-group-label\"\u003e\n\u003cspan class=\"esg-kit-group-vendor\"\u003eCarl’s Place\u003c\/span\u003e — Subfloor\u003c\/div\u003e\n            \u003cdiv class=\"esg-kit-line\" data-handle=\"carls-golf-room-floor-tiles-qty-5\" data-price=\"229.95\" data-default-qty=\"6\"\u003e\n              \u003cdiv class=\"esg-kit-line-info\"\u003e\n                \u003cdiv class=\"esg-kit-line-title\"\u003eFloor Tiles, Qty 5\u003c\/div\u003e\n                \u003cdiv class=\"esg-kit-line-sub\"\u003e5-pack — interlocking 40.25″ foam tiles\u003c\/div\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"esg-kit-line-price\" data-unit-price=\"229.95\"\u003e$229.95\u003c\/div\u003e\n              \u003cdiv class=\"esg-qty-stepper\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-minus\" aria-label=\"Decrease quantity\"\u003e−\u003c\/button\u003e\n                \u003cinput type=\"number\" class=\"esg-qty-input\" min=\"0\" max=\"99\" value=\"0\" inputmode=\"numeric\" aria-label=\"Quantity for Floor Tiles, Qty 5\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-plus\" aria-label=\"Increase quantity\"\u003e+\u003c\/button\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"esg-kit-line\" data-handle=\"carls-golf-room-floor-tiles-qty-6\" data-price=\"275.95\" data-default-qty=\"0\"\u003e\n              \u003cdiv class=\"esg-kit-line-info\"\u003e\n                \u003cdiv class=\"esg-kit-line-title\"\u003eFloor Tiles, Qty 6\u003c\/div\u003e\n                \u003cdiv class=\"esg-kit-line-sub\"\u003e6-pack — same interlocking tile, larger pack\u003c\/div\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"esg-kit-line-price\" data-unit-price=\"275.95\"\u003e$275.95\u003c\/div\u003e\n              \u003cdiv class=\"esg-qty-stepper\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-minus\" aria-label=\"Decrease quantity\"\u003e−\u003c\/button\u003e\n                \u003cinput type=\"number\" class=\"esg-qty-input\" min=\"0\" max=\"99\" value=\"0\" inputmode=\"numeric\" aria-label=\"Quantity for Floor Tiles, Qty 6\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-plus\" aria-label=\"Increase quantity\"\u003e+\u003c\/button\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"esg-kit-line\" data-handle=\"carls-floor-edges-depth-of-room-qty-6\" data-price=\"109.95\" data-default-qty=\"2\"\u003e\n              \u003cdiv class=\"esg-kit-line-info\"\u003e\n                \u003cdiv class=\"esg-kit-line-title\"\u003eDepth Edges, Qty 6\u003c\/div\u003e\n                \u003cdiv class=\"esg-kit-line-sub\"\u003e6-pack — left\/right sides of the room\u003c\/div\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"esg-kit-line-price\" data-unit-price=\"109.95\"\u003e$109.95\u003c\/div\u003e\n              \u003cdiv class=\"esg-qty-stepper\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-minus\" aria-label=\"Decrease quantity\"\u003e−\u003c\/button\u003e\n                \u003cinput type=\"number\" class=\"esg-qty-input\" min=\"0\" max=\"99\" value=\"0\" inputmode=\"numeric\" aria-label=\"Quantity for Depth Edges, Qty 6\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-plus\" aria-label=\"Increase quantity\"\u003e+\u003c\/button\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"esg-kit-line\" data-handle=\"carls-floor-edges-width-of-room-qty-6\" data-price=\"109.95\" data-default-qty=\"2\"\u003e\n              \u003cdiv class=\"esg-kit-line-info\"\u003e\n                \u003cdiv class=\"esg-kit-line-title\"\u003eWidth Edges, Qty 6\u003c\/div\u003e\n                \u003cdiv class=\"esg-kit-line-sub\"\u003e6-pack — front\/back of the room\u003c\/div\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"esg-kit-line-price\" data-unit-price=\"109.95\"\u003e$109.95\u003c\/div\u003e\n              \u003cdiv class=\"esg-qty-stepper\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-minus\" aria-label=\"Decrease quantity\"\u003e−\u003c\/button\u003e\n                \u003cinput type=\"number\" class=\"esg-qty-input\" min=\"0\" max=\"99\" value=\"0\" inputmode=\"numeric\" aria-label=\"Quantity for Width Edges, Qty 6\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-plus\" aria-label=\"Increase quantity\"\u003e+\u003c\/button\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"esg-kit-line\" data-handle=\"carls-floor-edge-corners-qty-4\" data-price=\"59.95\" data-default-qty=\"1\"\u003e\n              \u003cdiv class=\"esg-kit-line-info\"\u003e\n                \u003cdiv class=\"esg-kit-line-title\"\u003eEdge Corners, Qty 4\u003c\/div\u003e\n                \u003cdiv class=\"esg-kit-line-sub\"\u003e4-pack — one corner per room corner\u003c\/div\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"esg-kit-line-price\" data-unit-price=\"59.95\"\u003e$59.95\u003c\/div\u003e\n              \u003cdiv class=\"esg-qty-stepper\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-minus\" aria-label=\"Decrease quantity\"\u003e−\u003c\/button\u003e\n                \u003cinput type=\"number\" class=\"esg-qty-input\" min=\"0\" max=\"99\" value=\"0\" inputmode=\"numeric\" aria-label=\"Quantity for Edge Corners, Qty 4\"\u003e\n                \u003cbutton type=\"button\" class=\"esg-qty-btn esg-qty-plus\" aria-label=\"Increase quantity\"\u003e+\u003c\/button\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003cdiv class=\"esg-kit-group-label\"\u003e\n\u003cspan class=\"esg-kit-group-vendor\"\u003eBig Moss Golf\u003c\/span\u003e — Hitting Surface\u003c\/div\u003e\n            \u003cdiv class=\"esg-kit-line esg-kit-line--turf\" data-handle=\"big-moss-commander-245g-putting-turf-bulk-surface-freight-sizes\" data-turf-line=\"true\"\u003e\n              \u003cdiv class=\"esg-kit-line-info\"\u003e\n                \u003cdiv class=\"esg-kit-line-title\"\u003eBig Moss Commander 245G Putting Turf\u003cspan class=\"esg-kit-optional-tag\"\u003eSize Selectable\u003c\/span\u003e\n\u003c\/div\u003e\n                \u003cdiv class=\"esg-kit-line-sub\"\u003e9\/16″ bulk surface, freight sizes — the hitting surface half of the system, sized to the finished tile field\u003c\/div\u003e\n              \u003c\/div\u003e\n              \u003cdiv class=\"esg-turf-controls\"\u003e\n                \u003cselect class=\"esg-turf-select\" aria-label=\"Big Moss Commander 245G Putting Turf size\"\u003e\n                  \u003coption value=\"\" data-price=\"0\"\u003eNo turf — tiles only\u003c\/option\u003e\n                  \u003coption value=\"10ft-x-10ft\" data-price=\"1349.00\"\u003e10′ x 10′ — $1,349.00\u003c\/option\u003e\n                  \u003coption value=\"10ft-x-12ft\" data-price=\"1489.00\"\u003e10′ x 12′ — $1,489.00\u003c\/option\u003e\n                  \u003coption value=\"10ft-x-15ft\" data-price=\"1749.00\"\u003e10′ x 15′ — $1,749.00\u003c\/option\u003e\n                  \u003coption value=\"10ft-x-18ft\" data-price=\"2008.00\"\u003e10′ x 18′ — $2,008.00\u003c\/option\u003e\n                  \u003coption value=\"10ft-x-20ft\" data-price=\"2198.00\"\u003e10′ x 20′ — $2,198.00\u003c\/option\u003e\n                  \u003coption value=\"10ft-x-25ft\" data-price=\"2598.00\"\u003e10′ x 25′ — $2,598.00\u003c\/option\u003e\n                  \u003coption value=\"10ft-x-30ft\" data-price=\"2972.00\"\u003e10′ x 30′ — $2,972.00\u003c\/option\u003e\n                  \u003coption value=\"12ft-x-12ft\" data-price=\"1657.00\"\u003e12′ x 12′ — $1,657.00\u003c\/option\u003e\n                  \u003coption value=\"12ft-x-15ft\" data-price=\"1908.00\"\u003e12′ x 15′ — $1,908.00\u003c\/option\u003e\n                  \u003coption value=\"12ft-x-18ft\" data-price=\"2160.00\"\u003e12′ x 18′ — $2,160.00\u003c\/option\u003e\n                  \u003coption value=\"12ft-x-20ft\" data-price=\"2378.00\"\u003e12′ x 20′ — $2,378.00\u003c\/option\u003e\n                  \u003coption value=\"12ft-x-25ft\" data-price=\"2897.00\"\u003e12′ x 25′ — $2,897.00\u003c\/option\u003e\n                  \u003coption value=\"12ft-x-30ft\" data-price=\"3391.00\"\u003e12′ x 30′ — $3,391.00\u003c\/option\u003e\n                \u003c\/select\u003e\n                \u003cdiv class=\"esg-turf-price\" data-unit-price=\"0\"\u003e$0.00\u003c\/div\u003e\n              \u003c\/div\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"esg-kit-total-row\"\u003e\n            \u003cspan class=\"esg-kit-total-label\"\u003eSystem Total\u003c\/span\u003e\n            \u003cspan class=\"esg-kit-total-price\" id=\"esg-kit-total-price\"\u003e$0.00\u003c\/span\u003e\n          \u003c\/div\u003e\n          \u003cp class=\"esg-kit-total-note\"\u003ePrices update live from each component’s own product price across both brands. Turf size is selectable, including a tiles-only option. Not sure how many of each to order? Use the \u003ca href=\"https:\/\/elitesimgolf.com\/products\/carls-place-golf-room-floor-tile-system\" style=\"color:#0A1A3A; text-decoration:underline;\"\u003esizing guide\u003c\/a\u003e first.\u003c\/p\u003e\n\n          \u003cbutton type=\"button\" class=\"esg-atc-btn\" id=\"esg-kit-atc-btn\"\u003eAdd System to Cart\u003c\/button\u003e\n          \u003cdiv class=\"esg-atc-status\" id=\"esg-kit-atc-status\"\u003e\u003c\/div\u003e\n\n          \u003cdiv class=\"esg-pdp-trust-line\"\u003e\n            \u003cspan\u003eFree UPS Ground Delivery\u003c\/span\u003e\n            \u003cspan\u003eShips from Tennessee\u003c\/span\u003e\n            \u003cspan\u003eAvailable for Local Pickup\u003c\/span\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"esg-stat-row\" style=\"margin-top:56px;\"\u003e\n        \u003cdiv class=\"esg-stat-tile\"\u003e\n          \u003cdiv class=\"esg-stat-num\"\u003e2\u003c\/div\u003e\n          \u003cdiv class=\"esg-stat-label\"\u003eBrands, One System\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"esg-stat-tile\"\u003e\n          \u003cdiv class=\"esg-stat-num\"\u003e1.25″\u003c\/div\u003e\n          \u003cdiv class=\"esg-stat-label\"\u003eSubfloor Thickness\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"esg-stat-tile\"\u003e\n          \u003cdiv class=\"esg-stat-num\"\u003e13\u003c\/div\u003e\n          \u003cdiv class=\"esg-stat-label\"\u003eTurf Sizes Available\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"esg-stat-tile\"\u003e\n          \u003cdiv class=\"esg-stat-num\"\u003e1\u003c\/div\u003e\n          \u003cdiv class=\"esg-stat-label\"\u003eCart, All Parts\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SECTION 2: Two Brands, One System --\u003e\n  \u003csection class=\"esg-section esg-section--light\"\u003e\n    \u003cdiv class=\"esg-inner\"\u003e\n      \u003cspan class=\"esg-eyebrow\"\u003eTwo Brands, One System\u003c\/span\u003e\n      \u003ch3\u003eA Subfloor Built for a Surface, and a Surface Built for a Subfloor\u003c\/h3\u003e\n      \u003cp class=\"esg-lede\"\u003eCarl’s Place builds the interlocking foam subfloor that levels the room and absorbs impact. Big Moss builds the hitting surface that goes on top. Paired together, they form one complete flooring system instead of two separate purchases made at two separate times.\u003c\/p\u003e\n      \u003cdiv class=\"esg-system-pair\"\u003e\n        \u003cdiv class=\"esg-system-pair-card\"\u003e\n          \u003cspan class=\"esg-system-pair-vendor\"\u003eCarl’s Place\u003c\/span\u003e\n          \u003ch4\u003eInterlocking Subfloor\u003c\/h4\u003e\n          \u003cp\u003eFoam tiles, tapered edges, and corners lock together into a level, cushioned base sized to the room, with tall tapered edges to blend into the surrounding floor.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"esg-system-pair-plus\"\u003e+\u003c\/div\u003e\n        \u003cdiv class=\"esg-system-pair-card\"\u003e\n          \u003cspan class=\"esg-system-pair-vendor\"\u003eBig Moss Golf\u003c\/span\u003e\n          \u003ch4\u003eCommander 245G Hitting Surface\u003c\/h4\u003e\n          \u003cp\u003eA 9\/16″ bulk putting and hitting turf, sold in freight sizes, installed directly on top of the finished tile field for a true, consistent roll and stance.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"esg-feature-grid\" style=\"margin-top:32px;\"\u003e\n        \u003cdiv class=\"esg-feature-card\"\u003e\n          \u003ch4\u003eReal Product Pricing\u003c\/h4\u003e\n          \u003cp\u003eEach line pulls its price straight from the live product listings on both brands, so the system total always matches current pricing.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"esg-feature-card\"\u003e\n          \u003ch4\u003eAdjustable to Room Size\u003c\/h4\u003e\n          \u003cp\u003eSet tile, edge, and corner quantities and choose a turf size to match the exact room. The starter quantities shown reflect a common mid-size bay and can be changed freely.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"esg-feature-card\"\u003e\n          \u003ch4\u003eSix Products, One Checkout\u003c\/h4\u003e\n          \u003cp\u003eAdd to Cart places all five Carl’s Place components, plus Big Moss turf if a size is selected, as separate line items in a single click, so there is no need to visit six different product pages.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SECTION 3: Sizing guide crosslink --\u003e\n  \u003csection class=\"esg-section esg-section--white\"\u003e\n    \u003cdiv class=\"esg-inner\"\u003e\n      \u003cspan class=\"esg-eyebrow\"\u003eNot Sure How Many to Order\u003c\/span\u003e\n      \u003ch3\u003eUse the Sizing Guide First\u003c\/h3\u003e\n      \u003cp class=\"esg-lede\"\u003eMeasure the room, then use the sizing guide and worked example to figure out how many tile packs, edge packs, and corner packs to set above, and which turf size completes the system.\u003c\/p\u003e\n      \u003cdiv class=\"esg-crosslink\"\u003e\n        \u003cdiv\u003e\n          \u003ch4 style=\"margin-bottom:4px;\"\u003eFull Sizing Guide\u003c\/h4\u003e\n          \u003cp\u003eStep-by-step measuring guide with a worked example for a typical room layout.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003ca class=\"esg-btn\" href=\"https:\/\/elitesimgolf.com\/products\/carls-place-golf-room-floor-tile-system\"\u003eView Sizing Guide\u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SECTION 4: Specs --\u003e\n  \u003csection class=\"esg-section esg-section--light\"\u003e\n    \u003cdiv class=\"esg-inner\"\u003e\n      \u003cspan class=\"esg-eyebrow\"\u003eSpecifications\u003c\/span\u003e\n      \u003ch3\u003eSystem Dimensions, Both Brands\u003c\/h3\u003e\n      \u003ctable class=\"esg-specs\"\u003e\n        \u003ctbody\u003e\n        \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eTile size, without edges\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e40.25″ x 40.25″ x 1.25″ (variance of up to 1\/8″)\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eTile size, with tall tapered edges\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e49″ x 49″ x 1.25″ (variance of up to 1\/8″)\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eEdge piece size\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e41.25″ x 5.25″ x 1.25″ (inner lip) (variance of up to 1\/8″)\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eFloor tiles\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eSold in packs of 5 or 6\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eEdge pieces\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eSold in packs of 6 (depth and width sold separately)\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eCorner pieces\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eSold in packs of 4\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eBig Moss Commander 245G turf thickness\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e9\/16″ bulk surface\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eBig Moss Commander 245G sizes\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e13 freight sizes, 10′ x 10′ up to 12′ x 30′\u003c\/td\u003e\n\u003c\/tr\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SECTION 5: Closing --\u003e\n  \u003csection class=\"esg-section esg-section--dark\"\u003e\n    \u003cdiv class=\"esg-inner esg-closing\"\u003e\n      \u003cspan class=\"esg-eyebrow\"\u003eSubfloor and Surface, Together\u003c\/span\u003e\n      \u003ch3\u003eOrder the Complete System in One Trip\u003c\/h3\u003e\n      \u003cp class=\"esg-lede\"\u003eSet the quantities and turf size above to match the room, then add the full Carl’s Place and Big Moss system to the cart at once.\u003c\/p\u003e\n      \u003ca class=\"esg-btn esg-btn--white\" href=\"https:\/\/elitesimgolf.com\/pages\/contact\"\u003eContact Us\u003c\/a\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- SECTION 6: FAQ --\u003e\n  \u003csection class=\"esg-section esg-section--white\"\u003e\n    \u003cdiv class=\"esg-inner\"\u003e\n      \u003cspan class=\"esg-eyebrow\"\u003eFrequently Asked Questions\u003c\/span\u003e\n      \u003ch3\u003eCommon Questions\u003c\/h3\u003e\n      \u003cdetails\u003e\n        \u003csummary\u003eWhy are Carl’s Place and Big Moss combined on one page?\u003c\/summary\u003e\n        \u003cp\u003eCarl’s Place makes the interlocking subfloor and Big Moss makes the hitting surface that installs on top of it. The two are sold as separate products from separate brands, but this page presents them together as one complete flooring system so both halves can be ordered in a single visit.\u003c\/p\u003e\n      \u003c\/details\u003e\n      \u003cdetails\u003e\n        \u003csummary\u003eIs this a single product, or does it add multiple products to my cart?\u003c\/summary\u003e\n        \u003cp\u003eAdd to Cart on this page adds each selected component — Carl’s Place floor tiles, edge pieces, corners, and Big Moss putting turf if selected — as its own line item, priced individually. This page is a convenience for ordering the full system in one step, not a single bundled SKU.\u003c\/p\u003e\n      \u003c\/details\u003e\n      \u003cdetails\u003e\n        \u003csummary\u003eIs the Big Moss putting turf required to order the system?\u003c\/summary\u003e\n        \u003cp\u003eNo. Turf size is selectable and defaults to “No turf — tiles only.” Choose a size to complete the system with a hitting surface, or leave it on the tiles-only default to order the Carl’s Place subfloor by itself.\u003c\/p\u003e\n      \u003c\/details\u003e\n      \u003cdetails\u003e\n        \u003csummary\u003eCan I set a quantity to zero and skip a component?\u003c\/summary\u003e\n        \u003cp\u003eYes. Set any component to 0 to leave it out of the order, for example skipping edge pieces if only the tile field is needed.\u003c\/p\u003e\n      \u003c\/details\u003e\n      \u003cdetails\u003e\n        \u003csummary\u003eHow do I know how many of each component and how much turf to order?\u003c\/summary\u003e\n        \u003cp\u003eUse the sizing guide linked above, which walks through measuring the room and includes a worked example for a typical layout, covering both the subfloor components and the turf size.\u003c\/p\u003e\n      \u003c\/details\u003e\n      \u003cdetails\u003e\n        \u003csummary\u003eDo the prices shown always match the individual product pages?\u003c\/summary\u003e\n        \u003cp\u003eYes, this page mirrors the live price of each individual product from both brands. If a price changes on either standalone listing, update the price shown here to match before publishing.\u003c\/p\u003e\n      \u003c\/details\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('esg-floorkit-root');\n  if (!root) return;\n\n  var allLines = Array.prototype.slice.call(root.querySelectorAll('.esg-kit-line'));\n  var lines = allLines.filter(function (line) { return !line.hasAttribute('data-turf-line'); });\n  var turfLine = root.querySelector('[data-turf-line]');\n  var turfSelect = turfLine ? turfLine.querySelector('.esg-turf-select') : null;\n  var turfPriceEl = turfLine ? turfLine.querySelector('.esg-turf-price') : null;\n  var totalEl = document.getElementById('esg-kit-total-price');\n  var headerPriceEl = document.getElementById('esg-kit-header-price');\n  var atcBtn = document.getElementById('esg-kit-atc-btn');\n  var statusEl = document.getElementById('esg-kit-atc-status');\n\n  function formatMoney(n) {\n    return '$' + n.toFixed(2).replace(\/\\d(?=(\\d{3})+\\.)\/g, '$\u0026,');\n  }\n\n  function currentQty(line) {\n    var input = line.querySelector('.esg-qty-input');\n    var v = parseInt(input.value, 10);\n    if (isNaN(v) || v \u003c 0) v = 0;\n    if (v \u003e 99) v = 99;\n    input.value = v;\n    return v;\n  }\n\n  function turfSelectedPrice() {\n    if (!turfSelect) return 0;\n    var opt = turfSelect.options[turfSelect.selectedIndex];\n    return opt ? parseFloat(opt.getAttribute('data-price')) || 0 : 0;\n  }\n\n  function recalcTotal() {\n    var total = 0;\n    lines.forEach(function (line) {\n      var price = parseFloat(line.getAttribute('data-price'));\n      var qty = currentQty(line);\n      total += price * qty;\n    });\n    var turfPrice = turfSelectedPrice();\n    total += turfPrice;\n    if (turfPriceEl) turfPriceEl.textContent = formatMoney(turfPrice);\n\n    totalEl.textContent = formatMoney(total);\n    headerPriceEl.textContent = formatMoney(total);\n    var anySelected = lines.some(function (line) { return currentQty(line) \u003e 0; }) || turfPrice \u003e 0;\n    atcBtn.disabled = !anySelected;\n  }\n\n  \/\/ seed default starter quantities on load\n  lines.forEach(function (line) {\n    var def = parseInt(line.getAttribute('data-default-qty'), 10) || 0;\n    var input = line.querySelector('.esg-qty-input');\n    input.value = def;\n\n    line.querySelector('.esg-qty-minus').addEventListener('click', function () {\n      input.value = Math.max(0, (parseInt(input.value, 10) || 0) - 1);\n      recalcTotal();\n    });\n    line.querySelector('.esg-qty-plus').addEventListener('click', function () {\n      input.value = Math.min(99, (parseInt(input.value, 10) || 0) + 1);\n      recalcTotal();\n    });\n    input.addEventListener('input', recalcTotal);\n    input.addEventListener('blur', recalcTotal);\n  });\n\n  if (turfSelect) {\n    turfSelect.addEventListener('change', recalcTotal);\n  }\n\n  recalcTotal();\n\n  atcBtn.addEventListener('click', function () {\n    var toAdd = lines\n      .map(function (line) {\n        return { handle: line.getAttribute('data-handle'), qty: currentQty(line), multiVariant: false };\n      })\n      .filter(function (item) { return item.qty \u003e 0; });\n\n    var turfPrice = turfSelectedPrice();\n    var turfSizeLabel = turfSelect \u0026\u0026 turfSelect.selectedIndex \u003e 0\n      ? turfSelect.options[turfSelect.selectedIndex].value\n      : null;\n\n    if (turfLine \u0026\u0026 turfSizeLabel) {\n      toAdd.push({ handle: turfLine.getAttribute('data-handle'), qty: 1, multiVariant: true, sizeToken: turfSizeLabel });\n    }\n\n    if (toAdd.length === 0) {\n      statusEl.textContent = 'Set a quantity for at least one component, or choose a turf size.';\n      statusEl.className = 'esg-atc-status esg-atc-status--err';\n      return;\n    }\n\n    atcBtn.disabled = true;\n    statusEl.textContent = 'Adding to cart\\u2026';\n    statusEl.className = 'esg-atc-status';\n\n    Promise.all(\n      toAdd.map(function (item) {\n        return fetch('\/products\/' + item.handle + '.js', { credentials: 'same-origin' })\n          .then(function (res) {\n            if (!res.ok) throw new Error('Could not load product: ' + item.handle);\n            return res.json();\n          })\n          .then(function (product) {\n            if (!item.multiVariant) {\n              var variant = product.variants \u0026\u0026 product.variants[0];\n              if (!variant) throw new Error('No variant found for: ' + item.handle);\n              return { id: variant.id, quantity: item.qty };\n            }\n            \/\/ Turf product: match the variant whose option values correspond to the selected size token,\n            \/\/ e.g. \"10ft-x-10ft\" -\u003e match a variant title containing \"10' x 10'\" style values.\n            var sizeParts = item.sizeToken.split('-x-').map(function (s) { return s.replace('ft', '').trim(); });\n            var match = (product.variants || []).find(function (v) {\n              var opts = (v.options || []).join(' ').toLowerCase();\n              return sizeParts.every(function (p) { return opts.indexOf(p) !== -1; });\n            });\n            if (!match) throw new Error('Could not match the selected turf size to a product variant. Verify size option values on the live product.');\n            return { id: match.id, quantity: item.qty };\n          });\n      })\n    )\n      .then(function (items) {\n        return fetch('\/cart\/add.js', {\n          method: 'POST',\n          credentials: 'same-origin',\n          headers: { 'Content-Type': 'application\/json', Accept: 'application\/json' },\n          body: JSON.stringify({ items: items }),\n        });\n      })\n      .then(function (res) {\n        if (!res.ok) {\n          return res.json().then(function (err) {\n            throw new Error(err \u0026\u0026 err.description ? err.description : 'Cart update failed.');\n          });\n        }\n        return res.json();\n      })\n      .then(function () {\n        statusEl.textContent = 'Added to cart. Redirecting\\u2026';\n        statusEl.className = 'esg-atc-status esg-atc-status--ok';\n        window.location.href = '\/cart';\n      })\n      .catch(function (err) {\n        statusEl.textContent = err \u0026\u0026 err.message ? err.message : 'Something went wrong adding the kit to your cart.';\n        statusEl.className = 'esg-atc-status esg-atc-status--err';\n        atcBtn.disabled = false;\n      });\n  });\n})();\n\u003c\/script\u003e\n\n\u003cscript type=\"application\/ld+json\"\u003e\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Why are Carl's Place and Big Moss combined on one page?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Carl's Place makes the interlocking subfloor and Big Moss makes the hitting surface that installs on top of it. The two are sold as separate products from separate brands, but this page presents them together as one complete flooring system so both halves can be ordered in a single visit.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is this a single product, or does it add multiple products to my cart?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Add to Cart on this page adds each selected component \\u2014 Carl's Place floor tiles, edge pieces, corners, and Big Moss putting turf if selected \\u2014 as its own line item, priced individually. This page is a convenience for ordering the full system in one step, not a single bundled SKU.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is the Big Moss putting turf required to order the system?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"No. Turf size is selectable and defaults to \\u201cNo turf \\u2014 tiles only.\\u201d Choose a size to complete the system with a hitting surface, or leave it on the tiles-only default to order the Carl's Place subfloor by itself.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I set a quantity to zero and skip a component?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes. Set any component to 0 to leave it out of the order, for example skipping edge pieces if only the tile field is needed.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do I know how many of each component and how much turf to order?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Use the sizing guide linked above, which walks through measuring the room and includes a worked example for a typical layout, covering both the subfloor components and the turf size.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Do the prices shown always match the individual product pages?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, this page mirrors the live price of each individual product from both brands. If a price changes on either standalone listing, update the price shown here to match before publishing.\"\n      }\n    }\n  ]\n}\n\u003c\/script\u003e","brand":"Carl's Place","offers":[{"title":"Small","offer_id":48497719017666,"sku":null,"price":959.65,"currency_code":"USD","in_stock":true},{"title":"Large","offer_id":48497719050434,"sku":null,"price":5898.96,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0692\/9698\/0162\/files\/floor-tile-edge-hero.jpg?v=1785184014","url":"https:\/\/elitesimgolf.com\/products\/carl-s-place-golf-room-floor-tile-kit","provider":"Elite Sim Golf","version":"1.0","type":"link"}