{"product_id":"mesh-vinyl-banner","title":"mesh vinyl banner","description":"\u003cstyle\u003e\n  .vn {\n    --c:      #22D3C8;\n    --i:      #818CF8;\n    --i-l:    #EEF2FF;\n    --l:      #A78BFA;\n    --l-d:    #7C3AED;\n    --l-l:    #F3F0FF;\n    --grad:   linear-gradient(90deg, #22D3C8, #818CF8, #A78BFA);\n    --cyan-v:  #0ec5db;\n    --cyan-dk: #0d7a8a;\n    --cyan-mid:#c2edf2;\n    --white:   #ffffff;\n    --surface: #f7fbfc;\n    --text:    #162028;\n    --text-2:  #2e4452;\n    --muted:   #627a88;\n    --muted-lt:#9ab0bc;\n    --border:  #ddeef2;\n    --border-lt:#eef6f8;\n    --ink:     #1A202C;\n    --ink-70:  #374151;\n    --ink-40:  #6B7280;\n    --ink-15:  #E5E7EB;\n    --r-lg:   20px;\n    --shadow-tbl: 0 2px 16px rgba(100,100,160,.08);\n    --radius:  14px;\n    --transition: all 0.22s cubic-bezier(0.4,0,0.2,1);\n    --row-even: #FAFBFF;\n    --disabled: #cccccc;\n  \n    color: var(--text);\n    background: var(--white);\n    -webkit-font-smoothing: antialiased;\n  }\n\n  \n  @keyframes vn-rb {\n    0%   { background-position: 0% }\n    100% { background-position: 300% }\n  }\n  .vn-glow {\n    background: linear-gradient(90deg, var(--cyan-v) 0%, #22d3ee 25%, var(--i) 55%, var(--l) 70%, var(--cyan-v) 100%);\n    background-size: 280% auto;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    animation: vn-rb 6s ease-in-out infinite alternate;\n    font-weight: 900;\n    letter-spacing: -0.5px;\n  }\n  .vn-heading {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    margin-bottom: 32px;\n  }\n  .vn-heading-bar {\n    width: 3px;\n    height: 26px;\n    border-radius: 99px;\n    background: linear-gradient(180deg, var(--cyan-v), var(--cyan-dk));\n    flex-shrink: 0;\n    opacity: 0.85;\n  }\n  .vn-heading h2 {\n    font-size: 1.65em;\n    font-weight: 700;\n    margin: 0;\n    color: var(--text);\n    letter-spacing: -0.3px;\n  }\n  .vn-heading h2 em {\n    font-style: normal;\n    color: var(--cyan-dk);\n  }\n  .vn-intro {\n    background: linear-gradient(160deg, #d8f2f6 0%, #e8f9fb 40%, #f0fbfc 100%);\n    position: relative;\n    text-align: center;\n    padding: 56px 24px 60px;\n    border-bottom: 1px solid var(--border);\n  }\n  .vn-intro::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background-image:\n      radial-gradient(circle at 20% 50%, rgba(14,197,219,.07) 0%, transparent 55%),\n      radial-gradient(circle at 80% 30%, rgba(129,140,248,.05) 0%, transparent 50%);\n    pointer-events: none;\n  }\n  .vn-intro-inner {\n    max-width: 760px;\n    margin: 0 auto;\n    position: relative;\n  }\n  .vn-intro p {\n    font-size: 1.0em;\n    color: var(--text-2);\n    line-height: 1.9;\n    max-width: 660px;\n    margin: 0 auto 8px;\n  }\n  .vn-intro p strong {\n    color: var(--text);\n    font-weight: 600;\n  }\n  .vn-cta {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-top: 24px;\n    padding: 13px 30px;\n    background: var(--text);\n    color: white !important;\n    font-size: 0.95em;\n    font-weight: 600;\n    border-radius: 8px;\n    text-decoration: none;\n    letter-spacing: 0.01em;\n    box-shadow: 0 4px 14px rgba(22,32,40,.22);\n    transition: var(--transition);\n  }\n  .vn-cta:hover {\n    background: #0d1a24;\n    transform: translateY(-1px);\n    box-shadow: 0 6px 20px rgba(22,32,40,.3);\n  }\n  .vn-promo-section {\n    background: linear-gradient(135deg, #d6f0f5 0%, #e4f7fa 60%, #daf5f8 100%);\n    border-bottom: 1px solid var(--cyan-mid);\n  }\n  .vn-promo {\n    display: flex;\n    align-items: stretch;\n    max-width: 1200px;\n    margin: 0 auto;\n  }\n  .vn-promo-img {\n    width: 38%;\n    flex-shrink: 0;\n    overflow: hidden;\n    background: var(--cyan-mid);\n    position: relative;\n  }\n  .vn-promo-img::after {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(90deg, transparent 70%, rgba(214,240,245,.4) 100%);\n    pointer-events: none;\n  }\n  .vn-promo-img img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    min-height: 240px;\n    transition: transform .5s ease;\n  }\n  .vn-promo-img:hover img {\n    transform: scale(1.03);\n  }\n  .vn-promo-body {\n    flex: 1;\n    padding: 44px 52px;\n    text-align: left;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    gap: 4px;\n  }\n  .vn-promo-body h3 {\n    font-size: 2.15em;\n    font-weight: 900;\n    margin: 0 0 14px;\n    line-height: 1.2;\n    letter-spacing: -0.6px;\n  }\n  .vn-promo-sub {\n    font-size: 1.05em;\n    font-weight: 600;\n    color: var(--text);\n    margin-bottom: 10px;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n  .vn-promo-sub::before {\n    content: '';\n    display: inline-block;\n    width: 20px;\n    height: 2px;\n    background: var(--cyan-dk);\n    border-radius: 99px;\n    flex-shrink: 0;\n  }\n  .vn-promo-body p {\n    font-size: 0.97em;\n    color: var(--muted);\n    line-height: 1.8;\n    margin: 0;\n    max-width: 480px;\n  }\n  .vn-section {\n    padding: 52px 0;\n    border-bottom: 1px solid var(--border-lt);\n  }\n  .vn-section:last-child {\n    border-bottom: none;\n  }\n  .vn-table-card {\n    background: var(--white);\n    border-radius: var(--r-lg);\n    border: 1px solid rgba(200,200,240,.4);\n    box-shadow: var(--shadow-tbl);\n    overflow: hidden;\n  }\n  .vn-instr {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 10px 18px;\n    background: var(--i-l);\n    border-bottom: 1px solid rgba(200,200,240,.3);\n    font-size: 12px;\n    color: var(--l-d);\n    font-weight: 500;\n  }\n  .vn-instr-dot {\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n    background: var(--i);\n    flex-shrink: 0;\n  }\n  .vn-tbl-wrap {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    scrollbar-width: thin;\n    scrollbar-color: rgba(129,140,248,.28) transparent;\n  }\n  .vn-tbl-wrap::-webkit-scrollbar {\n    height: 4px;\n  }\n  .vn-tbl-wrap::-webkit-scrollbar-track {\n    background: transparent;\n  }\n  .vn-tbl-wrap::-webkit-scrollbar-thumb {\n    background: rgba(129,140,248,.28);\n    border-radius: 99px;\n  }\n  .vn-table {\n    width: 100%;\n    border-collapse: collapse;\n    font-size: 12px;\n    table-layout: auto;\n    min-width: 540px;\n  }\n  .vn-table thead tr {\n    position: relative;\n  }\n  .vn-table thead th {\n    background: var(--white);\n    padding: 12px 8px 10px;\n    font-size: 10.5px;\n    font-weight: 700;\n    color: var(--ink-40);\n    text-align: center;\n    white-space: normal;\n    word-break: keep-all;\n    line-height: 1.35;\n    border-bottom: 1.5px solid var(--ink-15);\n    letter-spacing: 0.01em;\n    vertical-align: bottom;\n  }\n  .vn-table thead th:first-child {\n    text-align: left;\n    padding-left: 14px;\n    position: sticky;\n    left: 0;\n    z-index: 30;\n    background: var(--white);\n    font-size: 10.5px;\n    min-width: 120px;\n    max-width: 140px;\n  }\n  .vn-table thead tr::after {\n    content: '';\n    display: block;\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    height: 2px;\n    background: var(--grad);\n    background-size: 300%;\n    animation: vn-rb 5s linear infinite;\n  }\n  .vn-table tbody tr {\n    border-bottom: 1px solid var(--ink-15);\n    cursor: pointer;\n    transition: background .12s;\n  }\n  .vn-table tbody tr:last-child {\n    border-bottom: none;\n  }\n  .vn-table tbody tr:nth-child(even) td {\n    background: var(--row-even);\n  }\n  .vn-table tbody tr:nth-child(even) td:first-child {\n    background: var(--row-even);\n  }\n  .vn-table tbody tr:hover td {\n    background: var(--i-l) !important;\n  }\n  .vn-table tbody tr:hover td:first-child {\n    background: var(--i-l) !important;\n    color: var(--l-d) !important;\n  }\n  .vn-table td {\n    padding: 10px 8px;\n    text-align: center;\n    color: var(--ink-70);\n    transition: background .12s;\n    white-space: nowrap;\n    vertical-align: middle;\n  }\n  .vn-table td:first-child {\n    position: sticky;\n    left: 0;\n    z-index: 5;\n    background: var(--white);\n    font-weight: 700;\n    color: var(--ink);\n    font-size: 11.5px;\n    text-align: left;\n    padding-left: 14px;\n    border-right: 1px solid rgba(200,200,240,.35);\n    white-space: normal;\n    word-break: keep-all;\n    line-height: 1.45;\n  }\n\n  \n  @media (min-width: 769px) {\n    .vn-tbl-wrap  { overflow-x: visible; }\n\n    .vn-table {\n      table-layout: fixed;\n      min-width: 0;               \n      font-size: 12.5px;\n    }\n\n    \n    .vn-table thead th:first-child {\n      width: 22%;\n      min-width: 0;\n      max-width: none;\n      font-size: 11.5px;\n    }\n\n    \n    .vn-table thead th:not(:first-child) {\n      width: calc(78% \/ 6);\n    }\n\n    \n    .vn-table thead th { font-size: 11px;  padding: 14px 8px 12px; }\n    .vn-table td       { padding: 11px 10px; white-space: nowrap; }\n    .vn-table td:first-child { font-size: 12px; }\n  }\n  .vn-table thead th.col-hi {\n    background: var(--i-l) !important;\n    color: var(--l-d);\n  }\n  .vn-table td.col-hi {\n    background: rgba(238,242,255,.55) !important;\n  }\n  .vn-table td.sel-cell {\n    background: var(--grad) !important;\n    background-size: 200% !important;\n    color: var(--white) !important;\n    font-weight: 700 !important;\n    border-radius: 8px;\n    animation: vn-rb 3s linear infinite;\n    box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.35), 0 2px 10px rgba(129,140,248,.35);\n  }\n  .vn-table td.sel-cell span { color: var(--white) !important; }\n  .vn-table td.h1 {\n    background-color: rgba(34,211,200,.04);\n  }\n  .vn-table td.h2 {\n    background-color: rgba(34,211,200,.09);\n  }\n  .vn-table td.h3 {\n    background-color: rgba(129,140,248,.07);\n  }\n  .vn-table td.h4 {\n    background-color: rgba(129,140,248,.13);\n  }\n  .vn-table td.h5 {\n    background-color: rgba(167,139,250,.10);\n  }\n  .vn-table-note {\n    font-size: 0.82em;\n    color: var(--muted);\n    line-height: 1.8;\n    padding: 16px 2px 0;\n    max-width: 860px;\n    margin: 0 auto;\n  }\n  .vn-table-note p {\n    margin: 0 0 4px;\n    padding-left: 1em;\n    text-indent: -1em;\n  }\n  .vn-table-note p::before {\n    content: '* ';\n    color: var(--cyan-dk);\n    font-weight: 600;\n  }\n  .vn-options-section {\n    padding: 48px 0 52px;\n    border-bottom: 1px solid var(--border-lt);\n  }\n  .vn-options-grid {\n    display: grid;\n    grid-template-columns: repeat(4,1fr);\n    gap: 16px;\n  }\n  .vn-option-card {\n    border: 1.5px solid var(--border);\n    border-radius: var(--radius);\n    overflow: hidden;\n    box-shadow: 0 1px 4px rgba(14,122,138,.06);\n    background: var(--white);\n    transition: var(--transition);\n    text-align: center;\n    cursor: pointer;\n  }\n  .vn-option-card:hover {\n    box-shadow: 0 10px 36px rgba(14,122,138,.16);\n    transform: translateY(-4px);\n    border-color: var(--cyan-v);\n  }\n  .vn-option-img {\n    aspect-ratio: 1;\n    background: var(--surface);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    position: relative;\n    overflow: hidden;\n  }\n  .vn-option-img img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    transition: transform .4s ease;\n  }\n  .vn-option-card:hover .vn-option-img img {\n    transform: scale(1.05);\n  }\n  .vn-free-badge {\n    position: absolute;\n    bottom: 10px;\n    right: 10px;\n    background: linear-gradient(135deg, var(--cyan-v), var(--cyan-dk));\n    color: white;\n    font-size: 0.82em;\n    font-weight: 700;\n    padding: 5px 13px;\n    border-radius: 99px;\n    letter-spacing: .03em;\n    box-shadow: 0 2px 8px rgba(14,122,138,.3);\n  }\n  .vn-paid-badge {\n    position: absolute;\n    bottom: 10px;\n    right: 10px;\n    background: #f06a22;\n    color: white;\n    font-size: 0.82em;\n    font-weight: 700;\n    padding: 5px 13px;\n    border-radius: 99px;\n    letter-spacing: .03em;\n    box-shadow: 0 2px 8px rgba(240,106,34,.3);\n  }\n  .vn-option-label {\n    padding: 14px 10px;\n    font-size: 0.95em;\n    font-weight: 600;\n    color: var(--text);\n    border-top: 1px solid var(--border-lt);\n  }\n  .vn-quality-section {\n    padding: 52px 0 56px;\n  }\n  .vn-quality {\n    display: grid;\n    grid-template-columns: 1fr 400px;\n    gap: 18px;\n    align-items: start;\n  }\n  .vn-quality-main-img {\n    border-radius: var(--radius);\n    overflow: hidden;\n    aspect-ratio: 4\/3;\n    background: var(--surface);\n    box-shadow: 0 2px 10px rgba(14,122,138,.08);\n  }\n  .vn-quality-main-img img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    transition: transform .5s ease;\n  }\n  .vn-quality-main-img:hover img {\n    transform: scale(1.03);\n  }\n  .vn-quality-right {\n    display: flex;\n    flex-direction: column;\n    gap: 14px;\n  }\n  .vn-quality-main-img { cursor: zoom-in; }\n  .vn-quality-sub-img {\n    border-radius: var(--radius);\n    overflow: hidden;\n    aspect-ratio: 4\/3;\n    background: var(--surface);\n    box-shadow: 0 1px 4px rgba(14,122,138,.06);\n    cursor: zoom-in;\n  }\n  .vn-quality-sub-img img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    transition: transform .4s ease;\n  }\n  .vn-quality-sub-img:hover img { transform: scale(1.04); }\n  .vn-lb {\n    display: none;\n    position: fixed;\n    inset: 0;\n    z-index: 9999;\n    background: rgba(0,0,0,.82);\n    align-items: center;\n    justify-content: center;\n    padding: 20px;\n    cursor: zoom-out;\n  }\n  .vn-lb.open { display: flex; }\n  .vn-lb img {\n    max-width: 100%;\n    max-height: 90vh;\n    border-radius: 10px;\n    box-shadow: 0 8px 40px rgba(0,0,0,.5);\n    object-fit: contain;\n    cursor: default;\n  }\n  .vn-lb-close {\n    position: absolute;\n    top: 16px; right: 20px;\n    background: none;\n    border: none;\n    color: var(--white);\n    font-size: 32px;\n    line-height: 1;\n    cursor: pointer;\n    opacity: .8;\n  }\n  .vn-lb-close:hover { opacity: 1; }\n  .vn-quality-text {\n    background: var(--white);\n    border: 1.5px solid var(--border);\n    border-radius: var(--radius);\n    padding: 24px;\n    box-shadow: 0 2px 10px rgba(14,122,138,.08);\n  }\n  .vn-quality-text h3 {\n    font-size: 1.2em;\n    font-weight: 700;\n    color: var(--text);\n    margin: 0 0 10px;\n    letter-spacing: -0.2px;\n  }\n  .vn-quality-text p {\n    font-size: 0.95em;\n    color: var(--muted);\n    line-height: 1.8;\n    margin: 0 0 18px;\n  }\n  .vn-btn {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    padding: 11px 24px;\n    background: linear-gradient(135deg, var(--cyan-v), var(--cyan-dk));\n    color: white !important;\n    font-size: 0.95em;\n    font-weight: 600;\n    border-radius: 99px;\n    text-decoration: none;\n    box-shadow: 0 4px 16px rgba(14,122,138,.28);\n    transition: var(--transition);\n    letter-spacing: .01em;\n  }\n  .vn-btn:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 8px 24px rgba(14,122,138,.38);\n  }\n  .vn-faq-section {\n    padding: 52px 0 56px;\n    border-top: 1px solid var(--border-lt);\n  }\n  .vn-faq-label {\n    display: block;\n    text-align: center;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: .1em;\n    text-transform: uppercase;\n    background: var(--grad);\n    background-size: 300%;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    animation: vn-rb 5s linear infinite;\n    margin-bottom: 10px;\n  }\n  .vn-faq-list {\n    display: flex;\n    flex-direction: column;\n    gap: 0;\n    border-radius: var(--r-lg);\n    border: 1px solid rgba(200,200,240,.45);\n    overflow: hidden;\n    box-shadow: var(--shadow-tbl);\n    background: var(--white);\n    max-width: 860px;\n    margin: 0 auto;\n  }\n  .vn-faq-item {\n    border-bottom: 1px solid var(--ink-15);\n  }\n  .vn-faq-item:last-child {\n    border-bottom: none;\n  }\n  .vn-faq-q {\n    display: flex;\n    align-items: center;\n    gap: 14px;\n    width: 100%;\n    padding: 18px 22px;\n    background: none;\n    border: none;\n    cursor: pointer;\n    text-align: left;\n    font-size: 14px;\n    font-weight: 600;\n    color: var(--ink);\n    line-height: 1.5;\n    transition: background .14s;\n    -webkit-tap-highlight-color: transparent;\n  }\n  .vn-faq-q:hover {\n    background: var(--i-l);\n  }\n  .vn-faq-item.open .vn-faq-q {\n    background: var(--i-l);\n    color: var(--l-d);\n    border-bottom: 1px solid rgba(200,200,240,.5);\n  }\n  .vn-faq-num {\n    flex-shrink: 0;\n    width: 26px;\n    height: 26px;\n    border-radius: 50%;\n    background: linear-gradient(135deg, var(--c), var(--i));\n    color: var(--white);\n    font-size: 11px;\n    font-weight: 700;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    line-height: 1;\n    box-shadow: 0 2px 8px rgba(129,140,248,.25);\n    transition: transform .2s;\n  }\n  .vn-faq-item.open .vn-faq-num {\n    background: linear-gradient(135deg, var(--i), var(--l));\n    transform: scale(1.1);\n  }\n  .vn-faq-q-text {\n    flex: 1;\n  }\n  .vn-faq-chevron {\n    flex-shrink: 0;\n    width: 20px;\n    height: 20px;\n    color: var(--muted-lt);\n    transition: transform .25s cubic-bezier(.4,0,.2,1), color .15s;\n  }\n  .vn-faq-item.open .vn-faq-chevron {\n    transform: rotate(180deg);\n    color: var(--l-d);\n  }\n  .vn-faq-a {\n    max-height: 0;\n    overflow: hidden;\n    transition: max-height .32s cubic-bezier(.4,0,.2,1);\n  }\n  .vn-faq-item.open .vn-faq-a {\n    max-height: 600px;\n  }\n  .vn-faq-a-inner {\n    padding: 0 22px 20px 62px;\n    font-size: 13.5px;\n    color: var(--muted);\n    line-height: 1.85;\n  }\n  .vn-faq-a-inner strong {\n    color: var(--text);\n    font-weight: 600;\n  }\n  .vn-faq-a-inner a {\n    color: var(--cyan-dk);\n    text-decoration: none;\n  }\n  .vn-faq-a-inner a:hover {\n    text-decoration: underline;\n  }\n  .vn-faq-a-inner ul {\n    margin: 10px 0 0 0;\n    padding-left: 18px;\n  }\n  .vn-faq-a-inner ul li {\n    margin-bottom: 5px;\n  }\n\n  \n  @media (max-width: 900px) {\n    .vn-quality { grid-template-columns: 1fr; }\n    .vn-options-grid { grid-template-columns: 1fr 1fr; gap: 12px; }\n  }\n\n  @media (max-width: 680px) {\n    .vn-promo { flex-direction: column; }\n    .vn-promo-img { width: 100%; max-height: 220px; }\n    .vn-promo-body { padding: 28px 24px; }\n    .vn-promo-body h3 { font-size: 1.6em; }\n    .vn-heading h2 { font-size: 1.25em; }\n    .vn-section, .vn-options-section, .vn-quality-section { padding: 36px 0; }\n    .vn-faq-a-inner { padding-left: 22px; }\n    .vn-faq-q { font-size: 13px; padding: 16px 16px; }\n    .vn-faq-a-inner { padding: 0 16px 18px 16px; }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"vn\"\u003e\n\u003c!-- ══ 1. INTRO HERO ══ --\u003e\n\u003cdiv class=\"vn-intro\"\u003e\n\u003cdiv class=\"vn-intro-inner\"\u003e\n\u003ch2\u003eMesh Vinyl Banner Printing Service\u003cbr\u003e\u003cem\u003e\"Guaranteed Quality in Every Square Inch\"\u003c\/em\u003e\n\u003c\/h2\u003e\n\u003cp\u003eWe provide \u003cstrong\u003eOutdoor Inkjet Vinyl Banner Printing\u003c\/strong\u003e in a wide range of grades, from \u003cstrong\u003eEconomy – Super Premium\u003c\/strong\u003e, using high-quality Latex \/ UV printing systems. Colours are vivid, sharp, weather-resistant, and printed at up to \u003cstrong\u003e1440 dpi\u003c\/strong\u003e, suitable for all types of advertising and outdoor signage.\u003c\/p\u003e\n\u003cp\u003eSupports \u003cstrong\u003eedge folding, pole pockets, and eyelets\u003c\/strong\u003e, and can be produced in any size, from event signage, exhibition booths, storefront banners, project signs, up to \u003cstrong\u003elarge-scale billboard vinyl banners\u003c\/strong\u003e.\u003c\/p\u003e\n\u003ca href=\"https:\/\/www.octopus.co.th\/blogs\/how-to\/vinyl-banner-type\" class=\"vn-cta\" rel=\"noopener\" target=\"_blank\"\u003eWhat is a vinyl banner? Vinyl material specs →\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ══ 2. PROMO BANNER ══ --\u003e\n\u003cdiv class=\"vn-promo-section\"\u003e\n\u003cdiv class=\"vn-promo\"\u003e\n\u003cdiv class=\"vn-promo-img\"\u003e\u003cimg alt=\"Affordable inkjet vinyl banner printing\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0098\/2653\/3433\/products\/vinyl100-365088-130093.jpg?v=1754979353\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"vn-promo-body\"\u003e\n\u003ch3\u003e\u003cspan class=\"vn-glow\"\u003eBest Value Vinyl Banner Starting from 99 THB\/sq.m.\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp class=\"vn-promo-sub\"\u003eFor short-term advertising and promotion, 3–6 months\u003c\/p\u003e\n\u003cp\u003eIdeal for brands that need large-quantity production for publicity or temporary campaigns, with strong impact at a budget-friendly price.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ══ 3. PRICE TABLE ══ --\u003e\n\u003csection class=\"vn-section desc_container page-width\"\u003e\n\u003cdiv class=\"vn-heading\"\u003e\n\u003cdiv class=\"vn-heading-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ch2\u003eInkjet Vinyl Banner Printing Price Table\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003c!-- TABLE CARD matching plaswood reference exactly --\u003e\n\u003cdiv class=\"vn-table-card\"\u003e\n\u003cdiv class=\"vn-instr\"\u003e\n\u003cspan class=\"vn-instr-dot\"\u003e\u003c\/span\u003e Hover rows to highlight · Click a cell to view the selected price\u003c\/div\u003e\n\u003cdiv class=\"vn-tbl-wrap\"\u003e\n\u003ctable id=\"vinylPriceTable\" class=\"vn-table\"\u003e\n\u003cthead\u003e\n\u003ctr id=\"vinylTheadRow\"\u003e\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody id=\"vinylPriceBody\"\u003e\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-table-note\"\u003e\n\u003cp\u003eThese prices are for artwork sizes of 3 sq.m. and above, excluding installation and delivery.\u003c\/p\u003e\n\u003cp\u003ePlease compare specifications carefully, including thickness, fibre, and whiteness. Vinyl made in China, Taiwan, Korea, America, and Germany can vary significantly in price. Available options include frontlit vinyl, blackout vinyl, double-sided vinyl, fire-retardant vinyl, mesh vinyl, vinyl for sticker mounting, translucent vinyl, and more.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- ══ 4. FINISHING OPTIONS ══ --\u003e\n\u003csection class=\"vn-options-section desc_container page-width\"\u003e\n\u003cdiv class=\"vn-heading\"\u003e\n\u003cdiv class=\"vn-heading-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ch2\u003eOPTION \u003cem\u003eVinyl Banner Edge Finishing\u003c\/em\u003e\n\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-options-grid\"\u003e\n\u003cdiv class=\"vn-option-card\"\u003e\n\u003cdiv class=\"vn-option-img\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0098\/2653\/3433\/files\/Vinyl_Edge_Option_1.jpg\" alt=\"Standard cut edge\"\u003e \u003cspan class=\"vn-free-badge\"\u003eFREE\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-option-label\"\u003eStandard Cut Edge\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-option-card\"\u003e\n\u003cdiv class=\"vn-option-img\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0098\/2653\/3433\/files\/Vinyl_Edge_Option_2.jpg\" alt=\"Folded edge\"\u003e \u003cspan class=\"vn-free-badge\"\u003eFREE\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-option-label\"\u003eFolded Edge\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-option-card\"\u003e\n\u003cdiv class=\"vn-option-img\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0098\/2653\/3433\/files\/Vinyl_Edge_Option_3.jpg\" alt=\"Eyelets\"\u003e \u003cspan class=\"vn-free-badge\"\u003eFREE\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-option-label\"\u003eEyelets\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-option-card\"\u003e\n\u003cdiv class=\"vn-option-img\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0098\/2653\/3433\/files\/Vinyl_Edge_Option_4.jpg\" alt=\"Pole pocket\"\u003e \u003cspan class=\"vn-paid-badge\"\u003e+100฿\/m\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-option-label\"\u003ePole Pocket\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- ══ 5. QUALITY SECTION ══ --\u003e\n\u003csection class=\"vn-quality-section desc_container page-width\"\u003e\n\u003cdiv class=\"vn-heading\"\u003e\n\u003cdiv class=\"vn-heading-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ch2\u003eConfidence in \u003cem\u003eQuality\u003c\/em\u003e from Every Angle\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"vn-quality\"\u003e\n\u003cdiv aria-label=\"View large image\" role=\"button\" id=\"vnQualityImg\" class=\"vn-quality-main-img\" tabindex=\"0\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0098\/2653\/3433\/files\/Premium-Vinyl.jpg\" alt=\"High-quality premium vinyl\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"vn-quality-right\"\u003e\n\u003cdiv aria-label=\"View large image\" role=\"button\" id=\"vnPreviewImg\" class=\"vn-quality-sub-img\" tabindex=\"0\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0098\/2653\/3433\/files\/Premium-Vinyl1.jpg\" alt=\"Premium vinyl details\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"vn-quality-text\"\u003e\n\u003ch3\u003eHigh-Quality Premium Vinyl\u003c\/h3\u003e\n\u003cp\u003eFor projects that require richer colour range and stronger visual impact, you can rely on both our premium materials and our high-quality inkjet printing systems.\u003c\/p\u003e\n\u003ca href=\"https:\/\/www.octopus.co.th\/products\/vinyl-banner-comparison\" class=\"vn-btn\" rel=\"noopener\" target=\"_blank\"\u003eVinyl Grades →\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- lightbox (shared) --\u003e\n\u003cdiv aria-modal=\"true\" role=\"dialog\" id=\"vnLb\" class=\"vn-lb\"\u003e\n\u003cbutton aria-label=\"Close\" class=\"vn-lb-close\"\u003e×\u003c\/button\u003e \u003cimg id=\"vnLbImg\" alt=\"\"\u003e\n\u003c\/div\u003e\n\u003c!-- ══ 6. FAQ SECTION ══ --\u003e\n\u003csection id=\"vinyl-faq\" class=\"vn-faq-section desc_container page-width\"\u003e\u003cspan class=\"vn-faq-label\"\u003eFrequently Asked Questions · FAQ\u003c\/span\u003e\n\u003cdiv style=\"margin-bottom: 36px;\" class=\"vn-heading\"\u003e\n\u003cdiv class=\"vn-heading-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ch2\u003eQuestions About \u003cem\u003eVinyl Banners\u003c\/em\u003e\n\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv role=\"list\" class=\"vn-faq-list\"\u003e\n\u003c!-- Q1 --\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Question\" itemprop=\"mainEntity\" itemscope=\"\" role=\"listitem\" class=\"vn-faq-item\"\u003e\n\u003cbutton aria-controls=\"faq-a1\" aria-expanded=\"false\" class=\"vn-faq-q\"\u003e \u003cspan aria-hidden=\"true\" class=\"vn-faq-num\"\u003e1\u003c\/span\u003e \u003cspan itemprop=\"name\" class=\"vn-faq-q-text\"\u003eWhat is the difference between inkjet-printed vinyl banners and standard vinyl banners?\u003c\/span\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 20 20\" class=\"vn-faq-chevron\"\u003e\u003cpolyline points=\"5 8 10 13 15 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Answer\" itemprop=\"acceptedAnswer\" itemscope=\"\" role=\"region\" id=\"faq-a1\" class=\"vn-faq-a\"\u003e\n\u003cdiv itemprop=\"text\" class=\"vn-faq-a-inner\"\u003eInkjet outdoor vinyl banners use Solvent, eCo-Solvent, UV, or Latex inks sprayed directly onto the vinyl surface, producing vivid colour, sharp detail, and resolutions up to \u003cstrong\u003e1,440 dpi\u003c\/strong\u003e. They support large continuous prints without visible joins and are ideal for outdoor signs, event banners, and large advertising displays — unlike standard screen-printed vinyl, which has more limitations in colour and resolution.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Q2 --\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Question\" itemprop=\"mainEntity\" itemscope=\"\" role=\"listitem\" class=\"vn-faq-item\"\u003e\n\u003cbutton aria-controls=\"faq-a2\" aria-expanded=\"false\" class=\"vn-faq-q\"\u003e \u003cspan aria-hidden=\"true\" class=\"vn-faq-num\"\u003e2\u003c\/span\u003e \u003cspan itemprop=\"name\" class=\"vn-faq-q-text\"\u003eWhich vinyl grade should I choose for outdoor use?\u003c\/span\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 20 20\" class=\"vn-faq-chevron\"\u003e\u003cpolyline points=\"5 8 10 13 15 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Answer\" itemprop=\"acceptedAnswer\" itemscope=\"\" role=\"region\" id=\"faq-a2\" class=\"vn-faq-a\"\u003e\n\u003cdiv itemprop=\"text\" class=\"vn-faq-a-inner\"\u003eIt depends on service life and budget:\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eStandard Frontlit Vinyl (440 gsm)\u003c\/strong\u003e — suitable for short-term promotions, 3–6 months, cost-effective\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDURA Frontlit Vinyl (510 gsm)\u003c\/strong\u003e — thicker and more durable, suitable for medium-term outdoor use, 6–12 months\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePremium Vinyl (Frontlit Colour)\u003c\/strong\u003e — CrystalWhite surface with the most vibrant print colour, ideal for higher-end brand work\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMesh Vinyl\u003c\/strong\u003e — suitable for windy open areas such as fences or tall buildings, allowing air to pass through and reducing tearing\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Q3 --\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Question\" itemprop=\"mainEntity\" itemscope=\"\" role=\"listitem\" class=\"vn-faq-item\"\u003e\n\u003cbutton aria-controls=\"faq-a3\" aria-expanded=\"false\" class=\"vn-faq-q\"\u003e \u003cspan aria-hidden=\"true\" class=\"vn-faq-num\"\u003e3\u003c\/span\u003e \u003cspan itemprop=\"name\" class=\"vn-faq-q-text\"\u003eWhat is the difference between Solvent, eCo-Solvent, UV, and Latex printing systems?\u003c\/span\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 20 20\" class=\"vn-faq-chevron\"\u003e\u003cpolyline points=\"5 8 10 13 15 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Answer\" itemprop=\"acceptedAnswer\" itemscope=\"\" role=\"region\" id=\"faq-a3\" class=\"vn-faq-a\"\u003e\n\u003cdiv itemprop=\"text\" class=\"vn-faq-a-inner\"\u003eEach system has different strengths:\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e4-colour Solvent\u003c\/strong\u003e — cost-effective, durable outdoors, suitable for economy jobs\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e6-colour eCo-Solvent\u003c\/strong\u003e — brighter colour with wider gamut, the most popular choice for general signage\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e6-colour UV\u003c\/strong\u003e — sharpest and most durable output, instant-dry UV curable ink, ideal for top-quality projects\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e6-colour Latex\u003c\/strong\u003e — environmentally friendly water-based ink (HP Environment Latex), suitable for indoor areas, food exhibitions, or sites requiring lower VOC emissions\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Q4 --\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Question\" itemprop=\"mainEntity\" itemscope=\"\" role=\"listitem\" class=\"vn-faq-item\"\u003e\n\u003cbutton aria-controls=\"faq-a4\" aria-expanded=\"false\" class=\"vn-faq-q\"\u003e \u003cspan aria-hidden=\"true\" class=\"vn-faq-num\"\u003e4\u003c\/span\u003e \u003cspan itemprop=\"name\" class=\"vn-faq-q-text\"\u003eWhat edge finishing options are available, and are there additional charges?\u003c\/span\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 20 20\" class=\"vn-faq-chevron\"\u003e\u003cpolyline points=\"5 8 10 13 15 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Answer\" itemprop=\"acceptedAnswer\" itemscope=\"\" role=\"region\" id=\"faq-a4\" class=\"vn-faq-a\"\u003e\n\u003cdiv itemprop=\"text\" class=\"vn-faq-a-inner\"\u003eThere are 4 options:\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eStandard cut edge\u003c\/strong\u003e — free, suitable for framed work or banners with existing support structures\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFolded edge\u003c\/strong\u003e — free, cleaner finish, stronger edge, helps prevent tearing\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEyelets\u003c\/strong\u003e — free, suitable for rope or wire hanging, with a standard eyelet spacing of 50 cm\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePole pocket\u003c\/strong\u003e — additional charge of \u003cstrong\u003e+100 THB\/metre\u003c\/strong\u003e for hanging with PVC or steel pipes\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Q5 --\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Question\" itemprop=\"mainEntity\" itemscope=\"\" role=\"listitem\" class=\"vn-faq-item\"\u003e\n\u003cbutton aria-controls=\"faq-a5\" aria-expanded=\"false\" class=\"vn-faq-q\"\u003e \u003cspan aria-hidden=\"true\" class=\"vn-faq-num\"\u003e5\u003c\/span\u003e \u003cspan itemprop=\"name\" class=\"vn-faq-q-text\"\u003eWhat is the minimum starting price, and how is the price calculated?\u003c\/span\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 20 20\" class=\"vn-faq-chevron\"\u003e\u003cpolyline points=\"5 8 10 13 15 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Answer\" itemprop=\"acceptedAnswer\" itemscope=\"\" role=\"region\" id=\"faq-a5\" class=\"vn-faq-a\"\u003e\n\u003cdiv itemprop=\"text\" class=\"vn-faq-a-inner\"\u003ePrices are calculated by \u003cstrong\u003efinished artwork area in square metres\u003c\/strong\u003e. The listed prices apply to jobs of \u003cstrong\u003e3 sq.m. and above\u003c\/strong\u003e, starting from \u003cstrong\u003e180 THB\/sq.m.\u003c\/strong\u003e for standard 4-colour Solvent vinyl up to \u003cstrong\u003e600 THB\/sq.m.\u003c\/strong\u003e for translucent Latex-printed vinyl — installation and delivery are not included. For smaller jobs under 3 sq.m., please contact us directly for a quotation.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Q6 --\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Question\" itemprop=\"mainEntity\" itemscope=\"\" role=\"listitem\" class=\"vn-faq-item\"\u003e\n\u003cbutton aria-controls=\"faq-a6\" aria-expanded=\"false\" class=\"vn-faq-q\"\u003e \u003cspan aria-hidden=\"true\" class=\"vn-faq-num\"\u003e6\u003c\/span\u003e \u003cspan itemprop=\"name\" class=\"vn-faq-q-text\"\u003eHow should artwork files be prepared? What file formats do you accept?\u003c\/span\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 20 20\" class=\"vn-faq-chevron\"\u003e\u003cpolyline points=\"5 8 10 13 15 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Answer\" itemprop=\"acceptedAnswer\" itemscope=\"\" role=\"region\" id=\"faq-a6\" class=\"vn-faq-a\"\u003e\n\u003cdiv itemprop=\"text\" class=\"vn-faq-a-inner\"\u003eWe accept \u003cstrong\u003eAI, PDF, PSD, TIFF\u003c\/strong\u003e and high-resolution JPG\/PNG files, with these recommendations:\n\u003cul\u003e\n\u003cli\u003eVector files (AI\/PDF) are best for large-format work because they do not lose sharpness when enlarged\u003c\/li\u003e\n\u003cli\u003eRaster files should have at least \u003cstrong\u003e72–150 dpi at actual size\u003c\/strong\u003e for outdoor signs viewed from a distance\u003c\/li\u003e\n\u003cli\u003eSet colour mode to \u003cstrong\u003eCMYK\u003c\/strong\u003e for results closer to the printed output\u003c\/li\u003e\n\u003cli\u003ePlease allow at least 5–10 cm bleed around the artwork\u003c\/li\u003e\n\u003c\/ul\u003e\nOur team can check files free of charge before production.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Q7 --\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Question\" itemprop=\"mainEntity\" itemscope=\"\" role=\"listitem\" class=\"vn-faq-item\"\u003e\n\u003cbutton aria-controls=\"faq-a7\" aria-expanded=\"false\" class=\"vn-faq-q\"\u003e \u003cspan aria-hidden=\"true\" class=\"vn-faq-num\"\u003e7\u003c\/span\u003e \u003cspan itemprop=\"name\" class=\"vn-faq-q-text\"\u003eHow many days does production and delivery take? Do you offer urgent service?\u003c\/span\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 20 20\" class=\"vn-faq-chevron\"\u003e\u003cpolyline points=\"5 8 10 13 15 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Answer\" itemprop=\"acceptedAnswer\" itemscope=\"\" role=\"region\" id=\"faq-a7\" class=\"vn-faq-a\"\u003e\n\u003cdiv itemprop=\"text\" class=\"vn-faq-a-inner\"\u003eProduction normally takes \u003cstrong\u003e2–5 working days\u003c\/strong\u003e after artwork confirmation and payment. Delivery options:\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eBangkok\u003c\/strong\u003e — delivered by Deliveree or Grab, typically within 1–2 hours\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUpcountry \/ Provincial areas\u003c\/strong\u003e — delivered via J\u0026amp;T Express or NIM Express within 1–2 days\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eInternational\u003c\/strong\u003e — delivered via DHL within 3–7 days\u003c\/li\u003e\n\u003c\/ul\u003e\nFor urgent work, please contact our team via Line \u003cstrong\u003e@octopusdesign\u003c\/strong\u003e to check production queue availability.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Q8 --\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Question\" itemprop=\"mainEntity\" itemscope=\"\" role=\"listitem\" class=\"vn-faq-item\"\u003e\n\u003cbutton aria-controls=\"faq-a8\" aria-expanded=\"false\" class=\"vn-faq-q\"\u003e \u003cspan aria-hidden=\"true\" class=\"vn-faq-num\"\u003e8\u003c\/span\u003e \u003cspan itemprop=\"name\" class=\"vn-faq-q-text\"\u003eDo you provide on-site installation? Which areas do you cover?\u003c\/span\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 20 20\" class=\"vn-faq-chevron\"\u003e\u003cpolyline points=\"5 8 10 13 15 8\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e\n\u003cdiv itemtype=\"https:\/\/schema.org\/Answer\" itemprop=\"acceptedAnswer\" itemscope=\"\" role=\"region\" id=\"faq-a8\" class=\"vn-faq-a\"\u003e\n\u003cdiv itemprop=\"text\" class=\"vn-faq-a-inner\"\u003eYes, we provide full installation service. Our team can handle general areas, high-rise facade work, Pylon Sign structures, and billboards — including after-hours work in the morning or at night according to shopping centre or building requirements. Coverage includes \u003cstrong\u003eBangkok and surrounding areas\u003c\/strong\u003e, and provincial coordination is available for larger projects. Contact us via Line \u003cstrong\u003e@octopusdesign\u003c\/strong\u003e or call \u003cstrong\u003e081-776-8329\u003c\/strong\u003e.\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- \/.vn-faq-list --\u003e\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c!-- ══ FAQPage JSON-LD Structured Data ══ --\u003e\n\u003cp\u003e\u003cscript type=\"application\/ld+json\"\u003e\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"inLanguage\": \"en\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the difference between inkjet-printed vinyl banners and standard vinyl banners?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Inkjet outdoor vinyl banners use Solvent, eCo-Solvent, UV, or Latex inks sprayed directly onto the vinyl surface, producing vivid colour, sharp detail, and resolutions up to 1,440 dpi. They support large continuous prints without visible joins and are ideal for outdoor signs, event banners, and large advertising displays.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Which vinyl grade should I choose for outdoor use?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"It depends on service life and budget. Standard frontlit vinyl 440 gsm is suitable for short-term promotions, DURA frontlit 510 gsm is thicker and more durable, premium frontlit colour provides the most vibrant print quality, and mesh vinyl is suitable for windy open areas.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the difference between Solvent, eCo-Solvent, UV, and Latex printing systems?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"4-colour Solvent is cost-effective and durable outdoors. 6-colour eCo-Solvent gives brighter colour and wider gamut. 6-colour UV offers the sharpest and most durable output. 6-colour Latex uses environmentally friendly water-based ink suitable for indoor or low-emission applications.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What edge finishing options are available, and are there additional charges?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"There are 4 options: standard cut edge free of charge, folded edge free of charge, eyelets free of charge with standard 50 cm spacing, and pole pocket with an additional charge of 100 THB per metre.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the minimum starting price, and how is the price calculated?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Prices are calculated by finished artwork area in square metres. The listed prices apply to jobs of 3 sq.m. and above, starting from 180 THB\/sq.m. for standard 4-colour Solvent vinyl up to 600 THB\/sq.m. for translucent Latex-printed vinyl.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How should artwork files be prepared? What file formats do you accept?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"We accept AI, PDF, PSD, TIFF, and high-resolution JPG\/PNG files. Vector files are best for large-format work. Raster files should have at least 72–150 dpi at actual size. CMYK mode is recommended, and 5–10 cm bleed should be allowed.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How many days does production and delivery take? Do you offer urgent service?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Production normally takes 2–5 working days after artwork confirmation and payment. Bangkok delivery is usually within 1–2 hours, provincial delivery within 1–2 days, and international delivery within 3–7 days. Urgent service is available upon request.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Do you provide on-site installation? Which areas do you cover?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, we provide full installation service covering Bangkok and surrounding areas, including general areas, facade work, Pylon Sign structures, and billboards. Provincial coordination is available for larger projects.\"\n      }\n    }\n  ]\n}\n\u003c\/script\u003e \u003cscript\u003e\n(function() {\n\n  const COLS = ['Standard Frontlit Vinyl','Blackout Vinyl','DURA Frontlit Vinyl','Mesh Vinyl','Premium Frontlit Vinyl','Translucent Vinyl'];\n  const COL_SUBS = ['Frontlit STD','Frontlit lite','Frontlit DURA','Mesh','Frontlit Colour','Backlit UV'];\n\n  const INK = [\n    { label:'4-Colour Solvent Ink System',\n      dots:['#00aaee','#ee00ee','#ddcc00','#111'],\n      prices:[180,220,280,300,320,350] },\n    { label:'6-Colour eCo-Solvent Ink System',\n      dots:['#00aaee','#00ccff','#ee00ee','#cc00aa','#ddcc00','#111'],\n      prices:[230,280,350,350,400,400] },\n    { label:'6-Colour UV Ink System',\n      dots:['#00aaee','#00ccff','#ee00ee','#cc00aa','#ddcc00','#111'],\n      prices:[null,400,480,500,500,500] },\n    { label:'6-Colour Latex Ink System',\n      dots:['#00aaee','#00ccff','#ee00ee','#cc00aa','#ddcc00','#111'],\n      prices:[null,400,550,550,550,600] },\n  ];\n\n  const allPrices = INK.flatMap(r=\u003er.prices.filter(Boolean));\n  const minP = Math.min(...allPrices), maxP = Math.max(...allPrices);\n  function heat(p) {\n    if (!p) return '';\n    const r = (p - minP) \/ (maxP - minP);\n    return r\u003c.2?'h1':r\u003c.4?'h2':r\u003c.6?'h3':r\u003c.8?'h4':'h5';\n  }\n\n  let selRow = null, selCol = null;\n\n  const thr = document.getElementById('vinylTheadRow');\n  const thCells = [];\n\n  const thCorner = document.createElement('th');\n  thCorner.textContent = 'Ink System \\\\ Vinyl Type';\n  thr.appendChild(thCorner);\n\n  COLS.forEach((name, ci) =\u003e {\n    const th = document.createElement('th');\n    th.id = `vthc${ci}`;\n    th.innerHTML = `\u003cspan style=\"display:block;font-size:10.5px;font-weight:800;letter-spacing:.01em;white-space:normal;word-break:keep-all;line-height:1.3\"\u003e${name}\u003c\/span\u003e\n                    \u003cspan style=\"display:block;font-size:9.5px;font-weight:500;opacity:.72;margin-top:3px;white-space:nowrap;line-height:1.3\"\u003e${COL_SUBS[ci]}\u003c\/span\u003e`;\n    th.addEventListener('mouseenter', () =\u003e hiCol(ci));\n    th.addEventListener('mouseleave', () =\u003e clearCol(ci));\n    thr.appendChild(th);\n    thCells.push(th);\n  });\n\n  const tbody = document.getElementById('vinylPriceBody');\n  INK.forEach((row, ri) =\u003e {\n    const tr = document.createElement('tr');\n\n    const labelTd = document.createElement('td');\n    labelTd.id = `vtdh${ri}`;\n    const dotsHtml = row.dots.map(c=\u003e`\u003cspan style=\"display:inline-block;width:9px;height:9px;border-radius:50%;background:${c};box-shadow:0 0 0 1px rgba(0,0,0,.08)\"\u003e\u003c\/span\u003e`).join('');\n    labelTd.innerHTML = `\u003cdiv style=\"display:flex;flex-direction:column;gap:5px;align-items:flex-start\"\u003e\n      \u003cspan style=\"display:flex;gap:3px;flex-shrink:0\"\u003e${dotsHtml}\u003c\/span\u003e\n      \u003cspan style=\"font-size:11.5px;font-weight:600;color:var(--ink-70);white-space:normal;word-break:keep-all;line-height:1.4\"\u003e${row.label}\u003c\/span\u003e\n    \u003c\/div\u003e`;\n    tr.appendChild(labelTd);\n\n    row.prices.forEach((p, ci) =\u003e {\n      const td = document.createElement('td');\n      td.id = `vtd${ri}_${ci}`;\n      if (p) {\n        td.innerHTML = `\u003cspan style=\"font-weight:700;font-size:13px;color:var(--cyan-dk);white-space:nowrap\"\u003e${p.toLocaleString()} ฿\u003c\/span\u003e\u003cspan style=\"display:block;font-size:13px;color:var(--muted-lt);white-space:nowrap\"\u003e\/sq.m.\u003c\/span\u003e`;\n        td.className = heat(p);\n      } else {\n        td.innerHTML = `\u003cspan style=\"color:var(--disabled);font-size:1.1em;font-weight:300\"\u003e—\u003c\/span\u003e`;\n      }\n      if (p) td.addEventListener('click', () =\u003e pick(ri, ci));\n      tr.appendChild(td);\n    });\n\n    tbody.appendChild(tr);\n  });\n\n  function hiCol(ci) {\n    thCells[ci].classList.add('col-hi');\n    INK.forEach((_,ri) =\u003e {\n      const td = document.getElementById(`vtd${ri}_${ci}`);\n      if (td \u0026\u0026 !(ri===selRow \u0026\u0026 ci===selCol)) td.classList.add('col-hi');\n    });\n  }\n  function clearCol(ci) {\n    thCells[ci].classList.remove('col-hi');\n    INK.forEach((_,ri) =\u003e document.getElementById(`vtd${ri}_${ci}`)?.classList.remove('col-hi'));\n  }\n\n  function pick(ri, ci) {\n\n    if (selRow !== null) {\n      document.getElementById(`vtdh${selRow}`).style.cssText = '';\n      if (selCol !== null) document.getElementById(`vtd${selRow}_${selCol}`)?.classList.remove('sel-cell');\n    }\n\n    if (selRow===ri \u0026\u0026 selCol===ci) { selRow=selCol=null; return; }\n\n    selRow=ri; selCol=ci;\n    const hLbl = document.getElementById(`vtdh${ri}`);\n    hLbl.style.color = 'var(--l-d)';\n    hLbl.style.background = 'var(--l-l)';\n    const cell = document.getElementById(`vtd${ri}_${ci}`);\n    cell.classList.remove('col-hi');\n    cell.classList.add('sel-cell');\n  }\n})();\n\n(function() {\n  const items = document.querySelectorAll('.vn-faq-item');\n  items.forEach(item =\u003e {\n    const btn = item.querySelector('.vn-faq-q');\n    if (!btn) return;\n    btn.addEventListener('click', () =\u003e {\n      const isOpen = item.classList.contains('open');\n\n      items.forEach(i =\u003e {\n        i.classList.remove('open');\n        i.querySelector('.vn-faq-q')?.setAttribute('aria-expanded', 'false');\n      });\n\n      if (!isOpen) {\n        item.classList.add('open');\n        btn.setAttribute('aria-expanded', 'true');\n      }\n    });\n  });\n})();\n\n\/* ── Lightbox ── *\/\n(function() {\n  var lb    = document.getElementById('vnLb');\n  var lbImg = document.getElementById('vnLbImg');\n  var cls   = lb \u0026\u0026 lb.querySelector('.vn-lb-close');\n  if (!lb) return;\n  function open(src, alt) {\n    lbImg.src = src; lbImg.alt = alt;\n    lb.classList.add('open');\n    document.body.style.overflow = 'hidden';\n  }\n  function close() { lb.classList.remove('open'); document.body.style.overflow = ''; }\n  ['vnQualityImg','vnPreviewImg'].forEach(function(id) {\n    var el = document.getElementById(id);\n    if (!el) return;\n    var im = el.querySelector('img');\n    el.addEventListener('click', function(){ open(im.src, im.alt); });\n    el.addEventListener('keydown', function(e){ if(e.key==='Enter'||e.key===' ') open(im.src, im.alt); });\n  });\n  lb.addEventListener('click', function(e){ if(e.target===lb) close(); });\n  if (cls) cls.addEventListener('click', close);\n  document.addEventListener('keydown', function(e){ if(e.key==='Escape') close(); });\n})();\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Octopus Media Solutions","offers":[{"title":"Default Title","offer_id":47660057198814,"sku":null,"price":99.0,"currency_code":"THB","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0098\/2653\/3433\/files\/550112230_1237126918453140_4713102998358403696_n.jpg?v=1762453143","url":"https:\/\/www.octopus.co.th\/en\/products\/mesh-vinyl-banner","provider":"Octopus Media Solutions","version":"1.0","type":"link"}