{"title":"Banners \u0026 Signs","description":"\u003cdiv style=\"font-family: inherit; color: inherit; line-height: 1.75; max-width: 760px;\"\u003e\n\n  \u003cp style=\"font-size: 1.05em; color: #cccccc; margin-bottom: 20px;\"\u003e\n    Full-color 13 oz. vinyl banners for businesses, events, teams, and promotions. \n    Any size, weather-resistant, grommets included — starting at $3.99\/sq ft. \n    Based in Chula Vista, ships nationwide in 24–48 hours.\n  \u003c\/p\u003e\n\n  \u003cdiv style=\"display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 24px;\"\u003e\n    \u003cdiv style=\"display:flex; align-items:center; gap:6px; background:#1a1a1a; border:1px solid rgba(255,255,255,0.07); border-radius:100px; padding:7px 14px; font-size:0.82rem; color:#ccc; white-space:nowrap;\"\u003e\n      \u003cspan style=\"color:#4caf50; font-weight:700;\"\u003e✓\u003c\/span\u003e From $3.99\/sq ft\n    \u003c\/div\u003e\n    \u003cdiv style=\"display:flex; align-items:center; gap:6px; background:#1a1a1a; border:1px solid rgba(255,255,255,0.07); border-radius:100px; padding:7px 14px; font-size:0.82rem; color:#ccc; white-space:nowrap;\"\u003e\n      \u003cspan style=\"color:#4caf50; font-weight:700;\"\u003e✓\u003c\/span\u003e 24–48 hr turnaround\n    \u003c\/div\u003e\n    \u003cdiv style=\"display:flex; align-items:center; gap:6px; background:#1a1a1a; border:1px solid rgba(255,255,255,0.07); border-radius:100px; padding:7px 14px; font-size:0.82rem; color:#ccc; white-space:nowrap;\"\u003e\n      \u003cspan style=\"color:#4caf50; font-weight:700;\"\u003e✓\u003c\/span\u003e Grommets included free\n    \u003c\/div\u003e\n    \u003cdiv style=\"display:flex; align-items:center; gap:6px; background:#1a1a1a; border:1px solid rgba(255,255,255,0.07); border-radius:100px; padding:7px 14px; font-size:0.82rem; color:#ccc; white-space:nowrap;\"\u003e\n      \u003cspan style=\"color:#4caf50; font-weight:700;\"\u003e✓\u003c\/span\u003e Any custom size\n    \u003c\/div\u003e\n    \u003cdiv style=\"display:flex; align-items:center; gap:6px; background:#1a1a1a; border:1px solid rgba(255,255,255,0.07); border-radius:100px; padding:7px 14px; font-size:0.82rem; color:#ccc; white-space:nowrap;\"\u003e\n      \u003cspan style=\"color:#4caf50; font-weight:700;\"\u003e✓\u003c\/span\u003e Indoor \u0026amp; outdoor\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Cross-sells --\u003e\n  \u003cdiv style=\"display: flex; flex-direction: column; gap: 12px;\"\u003e\n\n    \u003cdiv style=\"background: linear-gradient(135deg, #1a0d0e, #1a1a1a); border: 1px solid rgba(230,57,70,0.2); border-radius: 12px; padding: 18px 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px;\"\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #e63946; margin-bottom: 4px;\"\u003eDress your whole crew\u003c\/div\u003e\n        \u003cdiv style=\"font-size: 0.95rem; font-weight: 700; color: #ffffff; margin-bottom: 4px;\"\u003eCustom shirts for your event\u003c\/div\u003e\n        \u003cdiv style=\"font-size: 0.85rem; color: #888;\"\u003eMatch your banner with custom DTF-printed tees. No minimums, ships in 48 hours.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003ca href=\"\/collections\/shirts\" style=\"display:inline-block; background:#e63946; color:#fff; text-decoration:none; padding:11px 22px; border-radius:8px; font-size:0.88rem; font-weight:700; white-space:nowrap;\"\u003e\n        Shop Custom Tees →\n      \u003c\/a\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv style=\"background: linear-gradient(135deg, #1a0d0e, #1a1a1a); border: 1px solid rgba(230,57,70,0.2); border-radius: 12px; padding: 18px 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px;\"\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #e63946; margin-bottom: 4px;\"\u003ePremium event merch\u003c\/div\u003e\n        \u003cdiv style=\"font-size: 0.95rem; font-weight: 700; color: #ffffff; margin-bottom: 4px;\"\u003eCustom hoodies for your team\u003c\/div\u003e\n        \u003cdiv style=\"font-size: 0.85rem; color: #888;\"\u003eFull-color DTF-printed hoodies — bold designs, premium feel, fast turnaround.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003ca href=\"\/collections\/shirts\" style=\"display:inline-block; background:#e63946; color:#fff; text-decoration:none; padding:11px 22px; border-radius:8px; font-size:0.88rem; font-weight:700; white-space:nowrap;\"\u003e\n        Shop Custom Hoodies →\n      \u003c\/a\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv style=\"background: linear-gradient(135deg, #1a0d0e, #1a1a1a); border: 1px solid rgba(230,57,70,0.2); border-radius: 12px; padding: 18px 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px;\"\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: #e63946; margin-bottom: 4px;\"\u003eAlready have your own blanks?\u003c\/div\u003e\n        \u003cdiv style=\"font-size: 0.95rem; font-weight: 700; color: #ffffff; margin-bottom: 4px;\"\u003eJust order the transfers\u003c\/div\u003e\n        \u003cdiv style=\"font-size: 0.85rem; color: #888;\"\u003eDTF transfers you press yourself at home. No minimums, any design, ships in 48 hours.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003ca href=\"\/collections\/dtf\" style=\"display:inline-block; background:#e63946; color:#fff; text-decoration:none; padding:11px 22px; border-radius:8px; font-size:0.88rem; font-weight:700; white-space:nowrap;\"\u003e\n        Shop DTF Transfers →\n      \u003c\/a\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\u003c\/div\u003e","products":[{"product_id":"banner-printing","title":"Custom 13 oz. Vinyl Banners – Durable, Weather-Resistant \u0026 Full-Color","description":"\u003cstyle\u003e\n  .ggz-banner-page { font-family: inherit; color: inherit; max-width: 820px; margin: 0 auto; }\n  .ggz-section-label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: #e63946; margin-bottom: 6px; }\n  .ggz-card { background: #1a1a1a; border: 1px solid rgba(255,255,255,0.08); border-radius: 14px; padding: 24px 22px; margin-bottom: 20px; }\n  .ggz-card h3 { font-size: 1rem; font-weight: 700; color: #ffffff; margin-bottom: 16px; }\n  .ggz-field-label { display: block; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: #888; margin-bottom: 6px; }\n  .ggz-input { width: 100%; background: #111; border: 1px solid rgba(255,255,255,0.1); border-radius: 8px; padding: 11px 14px; font-size: 0.95rem; color: #ffffff; outline: none; font-family: inherit; transition: border-color 0.2s, box-shadow 0.2s; }\n  .ggz-input:focus { border-color: rgba(230,57,70,0.5); box-shadow: 0 0 0 3px rgba(230,57,70,0.1); }\n  .ggz-select { appearance: none; background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round'\/%3E%3C\/svg%3E\"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 36px; }\n  .ggz-row { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }\n  .ggz-row \u003e div { flex: 1; min-width: 140px; }\n  .ggz-option-grid { display: flex; gap: 8px; flex-wrap: wrap; }\n  .ggz-option-btn { background: #111; border: 1px solid rgba(255,255,255,0.1); border-radius: 8px; padding: 9px 16px; font-size: 0.85rem; font-weight: 600; color: #aaa; cursor: pointer; transition: all 0.15s ease; white-space: nowrap; }\n  .ggz-option-btn:hover { border-color: rgba(230,57,70,0.4); color: #fff; }\n  .ggz-option-btn.selected { background: rgba(230,57,70,0.12); border-color: #e63946; color: #ffffff; }\n  .ggz-price-box { background: linear-gradient(135deg, #1e0a0c, #1a1a1a); border: 1px solid rgba(230,57,70,0.25); border-radius: 14px; padding: 24px 22px; margin-bottom: 20px; }\n  .ggz-price-main { font-size: clamp(2rem, 5vw, 3rem); font-weight: 900; color: #ffffff; line-height: 1; margin-bottom: 4px; }\n  .ggz-price-sub { font-size: 0.85rem; color: #888; margin-bottom: 16px; }\n  .ggz-price-breakdown { display: flex; flex-direction: column; gap: 6px; border-top: 1px solid rgba(255,255,255,0.07); padding-top: 14px; }\n  .ggz-price-line { display: flex; justify-content: space-between; font-size: 0.85rem; color: #888; }\n  .ggz-price-line.total { color: #ffffff; font-weight: 700; font-size: 0.95rem; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 8px; margin-top: 4px; }\n  .ggz-submit-btn { display: block; width: 100%; background: #e63946; color: #fff; border: none; border-radius: 10px; padding: 18px; font-size: 1.05rem; font-weight: 800; cursor: pointer; transition: background 0.2s ease, transform 0.15s ease; letter-spacing: 0.02em; }\n  .ggz-submit-btn:hover { background: #c1121f; transform: translateY(-2px); }\n  .ggz-submit-btn:active { transform: translateY(0); }\n  .ggz-submit-btn:disabled { opacity: 0.4; cursor: not-allowed; transform: none; }\n  .ggz-features { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 28px; }\n  .ggz-feature-pill { display: flex; align-items: center; gap: 6px; background: #1a1a1a; border: 1px solid rgba(255,255,255,0.07); border-radius: 100px; padding: 7px 14px; font-size: 0.8rem; color: #ccc; white-space: nowrap; }\n  .ggz-feature-pill span { color: #4caf50; font-weight: 700; }\n  .ggz-success { display: none; background: rgba(76,175,80,0.1); border: 1px solid rgba(76,175,80,0.3); border-radius: 10px; padding: 18px 20px; font-size: 0.95rem; color: #4caf50; margin-top: 16px; }\n  .ggz-textarea { resize: vertical; min-height: 90px; }\n  @media (max-width: 500px) { .ggz-option-grid { gap: 6px; } .ggz-option-btn { font-size: 0.78rem; padding: 8px 12px; } }\n\u003c\/style\u003e\n\n\u003cdiv class=\"ggz-banner-page\"\u003e\n\n  \u003cp style=\"font-size: 1.05em; color: #cccccc; margin-bottom: 24px; line-height: 1.75;\"\u003e\n    Full-color 13 oz. vinyl banners for any size, any event. Configure yours below — \n    grommets, finishing, resolution, and quantity all included. Based in Chula Vista, CA. \n    Ships nationwide in 24–48 hours.\n  \u003c\/p\u003e\n\n  \u003c!-- Feature Pills --\u003e\n  \u003cdiv class=\"ggz-features\"\u003e\n    \u003cdiv class=\"ggz-feature-pill\"\u003e\n\u003cspan\u003e✓\u003c\/span\u003e Free hemming \u0026amp; grommets\u003c\/div\u003e\n    \u003cdiv class=\"ggz-feature-pill\"\u003e\n\u003cspan\u003e✓\u003c\/span\u003e 24–48 hr turnaround\u003c\/div\u003e\n    \u003cdiv class=\"ggz-feature-pill\"\u003e\n\u003cspan\u003e✓\u003c\/span\u003e Indoor \u0026amp; outdoor\u003c\/div\u003e\n    \u003cdiv class=\"ggz-feature-pill\"\u003e\n\u003cspan\u003e✓\u003c\/span\u003e Any custom size\u003c\/div\u003e\n    \u003cdiv class=\"ggz-feature-pill\"\u003e\n\u003cspan\u003e✓\u003c\/span\u003e Gloss or matte finish\u003c\/div\u003e\n    \u003cdiv class=\"ggz-feature-pill\"\u003e\n\u003cspan\u003e✓\u003c\/span\u003e No minimums\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- STEP 1: SIZE --\u003e\n  \u003cdiv class=\"ggz-card\"\u003e\n    \u003cdiv class=\"ggz-section-label\"\u003eStep 1\u003c\/div\u003e\n    \u003ch3\u003eBanner Size\u003c\/h3\u003e\n    \u003cdiv class=\"ggz-row\"\u003e\n      \u003cdiv\u003e\n        \u003clabel class=\"ggz-field-label\"\u003eWidth (feet)\u003c\/label\u003e\n        \u003cinput type=\"number\" class=\"ggz-input\" id=\"ggz-width\" min=\"1\" max=\"50\" placeholder=\"e.g. 3\" oninput=\"ggzUpdate()\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv style=\"flex: 0; display: flex; align-items: flex-end; padding-bottom: 12px; font-size: 1.3rem; color: #444;\"\u003e×\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003clabel class=\"ggz-field-label\"\u003eHeight (feet)\u003c\/label\u003e\n        \u003cinput type=\"number\" class=\"ggz-input\" id=\"ggz-height\" min=\"1\" max=\"50\" placeholder=\"e.g. 6\" oninput=\"ggzUpdate()\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003clabel class=\"ggz-field-label\"\u003eQuantity\u003c\/label\u003e\n        \u003cinput type=\"number\" class=\"ggz-input\" id=\"ggz-qty\" min=\"1\" value=\"1\" oninput=\"ggzUpdate()\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003c!-- Quick Size Presets --\u003e\n    \u003clabel class=\"ggz-field-label\" style=\"margin-top: 8px;\"\u003eQuick Presets\u003c\/label\u003e\n    \u003cdiv class=\"ggz-option-grid\"\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzPreset(2,4)\"\u003e2' × 4'\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzPreset(3,6)\"\u003e3' × 6'\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzPreset(4,8)\"\u003e4' × 8'\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzPreset(4,10)\"\u003e4' × 10'\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzPreset(5,10)\"\u003e5' × 10'\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzPreset(6,12)\"\u003e6' × 12'\u003c\/button\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- STEP 2: FINISHING --\u003e\n  \u003cdiv class=\"ggz-card\"\u003e\n    \u003cdiv class=\"ggz-section-label\"\u003eStep 2\u003c\/div\u003e\n    \u003ch3\u003eFinishing Options\u003c\/h3\u003e\n\n    \u003clabel class=\"ggz-field-label\"\u003eSurface Finish\u003c\/label\u003e\n    \u003cdiv class=\"ggz-option-grid\" style=\"margin-bottom: 18px;\"\u003e\n      \u003cbutton class=\"ggz-option-btn selected\" onclick=\"ggzSelect(this,'finish')\" data-val=\"Gloss\"\u003eGloss\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzSelect(this,'finish')\" data-val=\"Matte\"\u003eMatte\u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003clabel class=\"ggz-field-label\"\u003eGrommets\u003c\/label\u003e\n    \u003cdiv class=\"ggz-option-grid\" style=\"margin-bottom: 18px;\"\u003e\n      \u003cbutton class=\"ggz-option-btn selected\" onclick=\"ggzSelect(this,'grommets')\" data-val=\"Every 2ft all sides\"\u003eEvery 2ft — all sides\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzSelect(this,'grommets')\" data-val=\"Every 2ft top \u0026amp; bottom\"\u003eEvery 2ft — top \u0026amp; bottom\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzSelect(this,'grommets')\" data-val=\"4 corners only\"\u003e4 corners only\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzSelect(this,'grommets')\" data-val=\"No grommets\"\u003eNo grommets\u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003clabel class=\"ggz-field-label\"\u003eHemming\u003c\/label\u003e\n    \u003cdiv class=\"ggz-option-grid\"\u003e\n      \u003cbutton class=\"ggz-option-btn selected\" onclick=\"ggzSelect(this,'hem')\" data-val=\"Hemmed all sides (included)\"\u003eHemmed — all sides \u003cspan style=\"color:#4caf50; font-size:0.75rem;\"\u003e(free)\u003c\/span\u003e\u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzSelect(this,'hem')\" data-val=\"No hemming\"\u003eNo hemming\u003c\/button\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- STEP 3: PRINT RESOLUTION --\u003e\n  \u003cdiv class=\"ggz-card\"\u003e\n    \u003cdiv class=\"ggz-section-label\"\u003eStep 3\u003c\/div\u003e\n    \u003ch3\u003ePrint Resolution\u003c\/h3\u003e\n    \u003cdiv class=\"ggz-option-grid\"\u003e\n      \u003cbutton class=\"ggz-option-btn selected\" onclick=\"ggzSelect(this,'resolution')\" data-val=\"360 DPI — Standard\" style=\"text-align:left;\"\u003e\n        \u003cdiv style=\"font-weight:700; color:#fff;\"\u003e360 DPI — Standard\u003c\/div\u003e\n        \u003cdiv style=\"font-size:0.75rem; color:#888; margin-top:2px;\"\u003eBest for large banners 5ft+, viewed from distance\u003c\/div\u003e\n      \u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzSelect(this,'resolution')\" data-val=\"720 DPI — High Res\" style=\"text-align:left;\"\u003e\n        \u003cdiv style=\"font-weight:700; color:#aaa;\"\u003e720 DPI — High Res\u003c\/div\u003e\n        \u003cdiv style=\"font-size:0.75rem; color:#888; margin-top:2px;\"\u003eBest for smaller banners or close-range viewing\u003c\/div\u003e\n      \u003c\/button\u003e\n      \u003cbutton class=\"ggz-option-btn\" onclick=\"ggzSelect(this,'resolution')\" data-val=\"1200 DPI — Latex\" style=\"text-align:left;\"\u003e\n        \u003cdiv style=\"font-weight:700; color:#aaa;\"\u003e1200 DPI — Latex \u003cspan style=\"color:#4caf50; font-size:0.7rem;\"\u003eGREENGUARD\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003cdiv style=\"font-size:0.75rem; color:#888; margin-top:2px;\"\u003eWater-based HP Latex inks, low emissions, indoor safe\u003c\/div\u003e\n      \u003c\/button\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- STEP 4: CONTACT + ARTWORK --\u003e\n  \u003cdiv class=\"ggz-card\"\u003e\n    \u003cdiv class=\"ggz-section-label\"\u003eStep 4\u003c\/div\u003e\n    \u003ch3\u003eYour Info \u0026amp; Project Details\u003c\/h3\u003e\n\n    \u003cform id=\"ggz-banner-form\" action=\"https:\/\/formspree.io\/f\/maqzzzjv\" method=\"POST\" style=\"display:flex; flex-direction:column; gap:14px;\"\u003e\n\n      \u003c!-- Hidden config fields — populated by JS --\u003e\n      \u003cinput type=\"hidden\" name=\"_subject\" value=\"Banner Quote Request — Good Guyz DTF\"\u003e\n      \u003cinput type=\"hidden\" name=\"banner_size\" id=\"ggz-field-size\"\u003e\n      \u003cinput type=\"hidden\" name=\"quantity\" id=\"ggz-field-qty\"\u003e\n      \u003cinput type=\"hidden\" name=\"finish\" id=\"ggz-field-finish\" value=\"Gloss\"\u003e\n      \u003cinput type=\"hidden\" name=\"grommets\" id=\"ggz-field-grommets\" value=\"Every 2ft all sides\"\u003e\n      \u003cinput type=\"hidden\" name=\"hemming\" id=\"ggz-field-hem\" value=\"Hemmed all sides (included)\"\u003e\n      \u003cinput type=\"hidden\" name=\"resolution\" id=\"ggz-field-resolution\" value=\"360 DPI — Standard\"\u003e\n      \u003cinput type=\"hidden\" name=\"estimated_price\" id=\"ggz-field-price\"\u003e\n\n      \u003cdiv class=\"ggz-row\"\u003e\n        \u003cdiv\u003e\n          \u003clabel class=\"ggz-field-label\"\u003eYour Name *\u003c\/label\u003e\n          \u003cinput type=\"text\" name=\"name\" required placeholder=\"John Smith\" class=\"ggz-input\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003clabel class=\"ggz-field-label\"\u003ePhone or Email *\u003c\/label\u003e\n          \u003cinput type=\"text\" name=\"contact\" required placeholder=\"(619) 555-0100 or email\" class=\"ggz-input\"\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003clabel class=\"ggz-field-label\"\u003eDo You Have Artwork Ready?\u003c\/label\u003e\n        \u003cdiv style=\"display:flex; gap:14px; flex-wrap:wrap; margin-top:4px;\"\u003e\n          \u003clabel style=\"display:flex; align-items:center; gap:7px; cursor:pointer; font-size:0.9rem; color:#ccc;\"\u003e\n            \u003cinput type=\"radio\" name=\"artwork\" value=\"Yes, file ready\" style=\"accent-color:#e63946;\"\u003e Yes, file ready\n          \u003c\/label\u003e\n          \u003clabel style=\"display:flex; align-items:center; gap:7px; cursor:pointer; font-size:0.9rem; color:#ccc;\"\u003e\n            \u003cinput type=\"radio\" name=\"artwork\" value=\"No, need design help\" style=\"accent-color:#e63946;\"\u003e No, need design help\n          \u003c\/label\u003e\n          \u003clabel style=\"display:flex; align-items:center; gap:7px; cursor:pointer; font-size:0.9rem; color:#ccc;\"\u003e\n            \u003cinput type=\"radio\" name=\"artwork\" value=\"Have something, need tweaks\" style=\"accent-color:#e63946;\"\u003e Have something, need tweaks\n          \u003c\/label\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv\u003e\n        \u003clabel class=\"ggz-field-label\"\u003eAdditional Notes\u003c\/label\u003e\n        \u003ctextarea name=\"notes\" class=\"ggz-input ggz-textarea\" placeholder=\"Event date, special requirements, deadline, or anything else...\"\u003e\u003c\/textarea\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- LIVE PRICE BOX --\u003e\n      \u003cdiv class=\"ggz-price-box\"\u003e\n        \u003cdiv class=\"ggz-section-label\"\u003eEstimated Total\u003c\/div\u003e\n        \u003cdiv class=\"ggz-price-main\" id=\"ggz-display-price\"\u003e—\u003c\/div\u003e\n        \u003cdiv class=\"ggz-price-sub\" id=\"ggz-display-sub\"\u003eEnter your dimensions above to see pricing\u003c\/div\u003e\n        \u003cdiv class=\"ggz-price-breakdown\" id=\"ggz-breakdown\" style=\"display:none;\"\u003e\n          \u003cdiv class=\"ggz-price-line\"\u003e\n\u003cspan\u003eSize\u003c\/span\u003e\u003cspan id=\"ggz-b-size\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ggz-price-line\"\u003e\n\u003cspan\u003eSq Ft\u003c\/span\u003e\u003cspan id=\"ggz-b-sqft\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ggz-price-line\"\u003e\n\u003cspan\u003eRate\u003c\/span\u003e\u003cspan\u003e$3.99 \/ sq ft\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ggz-price-line\"\u003e\n\u003cspan\u003eQty\u003c\/span\u003e\u003cspan id=\"ggz-b-qty\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ggz-price-line total\"\u003e\n\u003cspan\u003eTotal\u003c\/span\u003e\u003cspan id=\"ggz-b-total\"\u003e—\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cbutton type=\"submit\" class=\"ggz-submit-btn\" id=\"ggz-submit-btn\"\u003e\n        Request My Quote →\n      \u003c\/button\u003e\n\n    \u003c\/form\u003e\n\n    \u003cdiv class=\"ggz-success\" id=\"ggz-form-success\"\u003e\n      ✓ Quote request sent! We'll get back to you within 24 hours with final pricing and next steps.\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003c!-- FAQ --\u003e\n  \u003cdiv class=\"ggz-card\" style=\"margin-top: 8px;\"\u003e\n    \u003cdiv class=\"ggz-section-label\"\u003eFAQ\u003c\/div\u003e\n    \u003ch3\u003eCommon Questions\u003c\/h3\u003e\n    \u003cdiv style=\"display:flex; flex-direction:column; gap:16px;\"\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700; color:#fff; font-size:0.92rem; margin-bottom:4px;\"\u003eHow long does production take?\u003c\/div\u003e\n        \u003cdiv style=\"font-size:0.88rem; color:#888;\"\u003eOrders submitted before 3pm PST ship within 24–48 hours. Larger jobs or artwork issues may affect timing.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700; color:#fff; font-size:0.92rem; margin-bottom:4px;\"\u003eAre grommets and hemming free?\u003c\/div\u003e\n        \u003cdiv style=\"font-size:0.88rem; color:#888;\"\u003eYes — hemming and grommets are included at no extra charge on all banner orders.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700; color:#fff; font-size:0.92rem; margin-bottom:4px;\"\u003eWhat file format should I send?\u003c\/div\u003e\n        \u003cdiv style=\"font-size:0.88rem; color:#888;\"\u003ePNG, PDF, AI, or PSD at 300 DPI or higher. We'll review your file before printing and reach out if anything needs adjusting.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700; color:#fff; font-size:0.92rem; margin-bottom:4px;\"\u003eDo you do double-sided banners?\u003c\/div\u003e\n        \u003cdiv style=\"font-size:0.88rem; color:#888;\"\u003eYes — double-sided banners are two single-sided banners welded back to back. Mention it in the notes section above.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003cdiv style=\"font-weight:700; color:#fff; font-size:0.92rem; margin-bottom:4px;\"\u003eWhat's the maximum banner width?\u003c\/div\u003e\n        \u003cdiv style=\"font-size:0.88rem; color:#888;\"\u003eMaximum width is 10ft. Banners wider than 10ft will be welded together. Pole pocket banners max at 9.5ft wide.\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  var ggzSelections = { finish:'Gloss', grommets:'Every 2ft all sides', hem:'Hemmed all sides (included)', resolution:'360 DPI — Standard' };\n\n  function ggzSelect(btn, group) {\n    document.querySelectorAll('[onclick*=\"ggzSelect\"][onclick*=\"' + group + '\"]').forEach(function(b){ b.classList.remove('selected'); });\n    btn.classList.add('selected');\n    ggzSelections[group] = btn.getAttribute('data-val');\n    document.getElementById('ggz-field-' + group).value = ggzSelections[group];\n    ggzUpdate();\n  }\n\n  function ggzPreset(w, h) {\n    document.getElementById('ggz-width').value = w;\n    document.getElementById('ggz-height').value = h;\n    document.querySelectorAll('.ggz-option-btn[onclick*=\"ggzPreset\"]').forEach(function(b){ b.classList.remove('selected'); });\n    event.target.classList.add('selected');\n    ggzUpdate();\n  }\n\n  function ggzUpdate() {\n    var w = parseFloat(document.getElementById('ggz-width').value);\n    var h = parseFloat(document.getElementById('ggz-height').value);\n    var qty = parseInt(document.getElementById('ggz-qty').value) || 1;\n    var priceBox = document.getElementById('ggz-display-price');\n    var subBox = document.getElementById('ggz-display-sub');\n    var breakdown = document.getElementById('ggz-breakdown');\n\n    if (!w || !h || w \u003c= 0 || h \u003c= 0) {\n      priceBox.textContent = '—';\n      subBox.textContent = 'Enter your dimensions above to see pricing';\n      breakdown.style.display = 'none';\n      document.getElementById('ggz-field-price').value = '';\n      document.getElementById('ggz-field-size').value = '';\n      document.getElementById('ggz-field-qty').value = qty;\n      return;\n    }\n\n    var sqft = w * h;\n    var unitPrice = sqft * 3.99;\n    var total = unitPrice * qty;\n\n    priceBox.textContent = '$' + total.toFixed(2);\n    subBox.textContent = qty \u003e 1 ? ('$' + unitPrice.toFixed(2) + ' each × ' + qty + ' banners') : (sqft + ' sq ft at $3.99\/sq ft');\n    breakdown.style.display = 'flex';\n\n    document.getElementById('ggz-b-size').textContent = w + \"' × \" + h + \"'\";\n    document.getElementById('ggz-b-sqft').textContent = sqft + ' sq ft';\n    document.getElementById('ggz-b-qty').textContent = qty;\n    document.getElementById('ggz-b-total').textContent = '$' + total.toFixed(2);\n    document.getElementById('ggz-field-size').value = w + \"' × \" + h + \"'\";\n    document.getElementById('ggz-field-qty').value = qty;\n    document.getElementById('ggz-field-price').value = '$' + total.toFixed(2) + ' (est.)';\n  }\n\n  if (window.location.search.includes('success')) {\n    document.getElementById('ggz-form-success').style.display = 'block';\n    document.getElementById('ggz-banner-form').style.display = 'none';\n  }\n\n  document.querySelectorAll('.ggz-input').forEach(function(el) {\n    el.addEventListener('focus', function() {\n      this.style.borderColor = 'rgba(230,57,70,0.5)';\n      this.style.boxShadow = '0 0 0 3px rgba(230,57,70,0.1)';\n    });\n    el.addEventListener('blur', function() {\n      this.style.borderColor = 'rgba(255,255,255,0.1)';\n      this.style.boxShadow = 'none';\n    });\n  });\n\u003c\/script\u003e","brand":"GoodguyzDTF","offers":[{"title":"Default Title","offer_id":48157857054925,"sku":"","price":3.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0634\/9226\/0045\/files\/generated-image_2.png?v=1778825400"},{"product_id":"canvas-prints","title":"Custom Canvas Prints","description":"\u003cp\u003eFull-color printing on polycotton artistic canvas. High-resolution UV-resistant and scratch-resistant printing. Perfect for art prints, photo prints, wall canvas, and photography prints. Printed on HP Latex at up to 1440 DPI with eco-certified latex ink. 1.5″ thick stretcher bars. \u003c\/p\u003e","brand":"GoodguyzDTF","offers":[{"title":"11\"x14\" Portrait","offer_id":48566875914445,"sku":null,"price":49.99,"currency_code":"USD","in_stock":true},{"title":"14\"x11\" Landscape","offer_id":48566875947213,"sku":null,"price":49.99,"currency_code":"USD","in_stock":true},{"title":"12\"x12\" Square","offer_id":48566875979981,"sku":null,"price":44.99,"currency_code":"USD","in_stock":true},{"title":"16\"x20\" Portrait","offer_id":48566876012749,"sku":null,"price":59.99,"currency_code":"USD","in_stock":true},{"title":"20\"x16\" Landscape","offer_id":48566876045517,"sku":null,"price":59.99,"currency_code":"USD","in_stock":true},{"title":"16\"x16\" Square","offer_id":48566876078285,"sku":null,"price":54.99,"currency_code":"USD","in_stock":true},{"title":"24\"x36\" Portrait","offer_id":48566876111053,"sku":null,"price":79.99,"currency_code":"USD","in_stock":true},{"title":"36\"x24\" Landscape","offer_id":48566876143821,"sku":null,"price":79.99,"currency_code":"USD","in_stock":true},{"title":"24\"x24\" Square","offer_id":48566876176589,"sku":null,"price":69.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0634\/9226\/0045\/files\/generated-image_24.png?v=1779318079"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0634\/9226\/0045\/collections\/generated-image_2.png?v=1781751062","url":"https:\/\/goodguyzdtf.com\/collections\/banners-signs.oembed","provider":"GoodguyzDTF","version":"1.0","type":"link"}