{"product_id":"ghost-denim-tee","title":"Ghost-Denim Signature T-Shirt • 340 GSM (10 oz)","description":"\u003c!-- No Limits High-End Mobile Core Engine [Optimized v3] --\u003e\n\u003cstyle\u003e\n  \/* Root Layout Architecture *\/\n  .nl-mobile-engine {\n    \/* Brand tokens — defined once, reused everywhere instead of\n       repeating the same gradient\/color strings a dozen times.\n       Smaller CSS payload, one place to tweak brand colors later. *\/\n    --nl-red: #FF3005;\n    --nl-pink: #FF46C7;\n    --nl-brown: #3D0A0A;\n    --nl-cream: #FFF3D9;\n    --nl-gradient: linear-gradient(90deg, var(--nl-red) 0%, var(--nl-pink) 100%);\n\n    font-family: 'Nohemi', 'Helvetica Neue', sans-serif;\n    max-width: 500px;\n    margin: 0 auto;\n    padding: 12px;\n    box-sizing: border-box;\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  \/* Shared Layout Utilities *\/\n  .nl-flex-between {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    width: 100%;\n  }\n  .nl-flex-center {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  \/* Typography Rules *\/\n  .nl-header-font {\n    font-family: 'Futura ND 365', Arial, sans-serif;\n    font-weight: 900;\n    text-transform: uppercase;\n    letter-spacing: -0.03em;\n  }\n  .nl-tech-mono {\n    font-family: 'Nohemi', 'Helvetica Neue', sans-serif;\n    font-weight: 700;\n  }\n  .nl-text-gradient {\n    background: var(--nl-gradient);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    display: inline-block;\n  }\n\n  \/* Tactile Neubrutalist Mobile Cards *\/\n  .nl-brutal-card {\n    background-color: var(--nl-cream) !important;\n    color: var(--nl-brown) !important;\n    border: 2.5px solid var(--nl-brown);\n    border-radius: 12px;\n    padding: 20px;\n    margin-bottom: 24px;\n    box-shadow: 5px 5px 0px var(--nl-brown);\n    transition: transform 0.1s ease;\n    contain: layout style;\n  }\n  .nl-brutal-card:active {\n    transform: translate(2px, 2px);\n    box-shadow: 2px 2px 0px var(--nl-brown);\n  }\n\n  \/* Stock Status Scanning Line *\/\n  .nl-stock-scan-wrapper {\n    position: relative;\n    background: rgba(61, 10, 10, 0.08);\n    border: 2px solid var(--nl-brown);\n    border-radius: 6px;\n    height: 24px;\n    overflow: hidden;\n    margin: 14px 0;\n    contain: layout paint;\n  }\n  .nl-stock-fill {\n    background: var(--nl-gradient) !important;\n    height: 100%;\n    width: 57%;\n    position: relative;\n  }\n  .nl-stock-fill::after {\n    content: '';\n    position: absolute;\n    top: 0; left: 0; right: 0; bottom: 0;\n    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.4) 50%, rgba(255,255,255,0) 100%);\n    animation: nlScan 2.5s infinite linear;\n    will-change: transform;\n  }\n  @keyframes nlScan {\n    0% { transform: translate3d(-100%, 0, 0); }\n    100% { transform: translate3d(100%, 0, 0); }\n  }\n\n  \/* Star Rating Engine Utilities *\/\n  .nl-tp-stars { display: flex; gap: 3px; align-items: center; }\n  .nl-star-badge {\n    background: #00b67a;\n    width: 16px;\n    height: 16px;\n    border-radius: 1px;\n    color: #ffffff;\n    font-size: 11px;\n    font-family: Arial, sans-serif;\n    line-height: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  \/* Hidden Input CSS Tab Architecture Engine *\/\n  .nl-tab-input { display: none !important; }\n  .nl-tab-headers {\n    display: grid !important;\n    grid-template-columns: 1fr 1fr !important;\n    gap: 8px !important;\n    margin-bottom: 16px;\n  }\n  .nl-tab-trigger {\n    background: rgba(61, 10, 10, 0.06);\n    border: 2px solid var(--nl-brown);\n    border-radius: 6px;\n    padding: 10px;\n    text-align: center;\n    font-size: 11px;\n    cursor: pointer;\n    transition: transform 0.15s ease;\n  }\n  .nl-tab-trigger:active { transform: scale(0.97); }\n\n  \/* Tab View Logic Controllers *\/\n  #review-ig:checked ~ .nl-tab-headers #label-ig,\n  #review-tp:checked ~ .nl-tab-headers #label-tp,\n  #size-in:checked ~ .nl-size-switch-panel #label-in,\n  #size-cm:checked ~ .nl-size-switch-panel #label-cm {\n    background: var(--nl-gradient) !important;\n    color: #ffffff !important;\n    font-weight: 900;\n    box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\n  }\n\n  .nl-tab-panel {\n    display: none;\n    animation: nlFadeIn 0.25s ease-out forwards;\n  }\n  #review-ig:checked ~ .nl-tab-content #panel-ig,\n  #review-tp:checked ~ .nl-tab-content #panel-tp {\n    display: block;\n  }\n  @keyframes nlFadeIn {\n    from { opacity: 0; transform: translate3d(0, 4px, 0); }\n    to { opacity: 1; transform: translate3d(0, 0, 0); }\n  }\n\n  \/* Interactive Dropdown Updates *\/\n  .nl-clean-summary {\n    cursor: pointer;\n    outline: none;\n    list-style: none;\n  }\n  .nl-clean-summary::-webkit-details-marker { display: none; }\n  .nl-chevron {\n    float: right;\n    transition: transform 0.2s ease;\n  }\n  details[open] .nl-chevron { transform: rotate(180deg); }\n  .nl-reality-bullet { display: flex; gap: 8px; margin-bottom: 12px; }\n\n  \/* Mobile Spec Badges Matrix Grid *\/\n  .nl-spec-matrix {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 8px;\n    margin: 28px 0;\n  }\n  .nl-matrix-item {\n    background: var(--nl-cream);\n    color: var(--nl-brown);\n    border: 1.5px solid var(--nl-brown);\n    border-radius: 8px;\n    padding: 10px 4px;\n    text-align: center;\n    font-size: 10px;\n    font-weight: 800;\n    box-shadow: 2.5px 2.5px 0px var(--nl-brown);\n  }\n\n  \/* Mobile Responsive Dynamic Size Engine *\/\n  .nl-size-switch-panel {\n    display: flex;\n    justify-content: flex-end;\n    gap: 6px;\n    margin-bottom: 12px;\n  }\n  .nl-size-btn {\n    border: 1.5px solid var(--nl-brown);\n    background: rgba(61,10,10,0.04);\n    padding: 5px 10px;\n    font-size: 10px;\n    border-radius: 4px;\n    cursor: pointer;\n  }\n  .nl-size-row-group { display: none; }\n  #size-in:checked ~ .nl-size-container #rows-in,\n  #size-cm:checked ~ .nl-size-container #rows-cm {\n    display: table-row-group;\n    animation: nlFadeIn 0.2s ease-out;\n  }\n\n  \/* Complete Layout Tables Framework *\/\n  .nl-mobile-table {\n    width: 100%;\n    border-collapse: collapse;\n    background: var(--nl-cream);\n    color: var(--nl-brown);\n    table-layout: fixed;\n  }\n  .nl-mobile-table th, .nl-mobile-table td {\n    border: 1.5px solid var(--nl-brown);\n    padding: 8px 3px;\n    text-align: center;\n    font-size: 0.78rem;\n    white-space: nowrap;\n  }\n  .nl-mobile-table td:first-child {\n    font-size: 9.5px;\n    font-weight: 900;\n    text-align: left;\n    padding-left: 5px;\n  }\n\n  \/* Raw Box-Free Brand Description Layout *\/\n  .nl-raw-editorial {\n    margin: 40px 0;\n    line-height: 1.7;\n    font-size: 0.95rem;\n  }\n\n  \/* Live Indicator Pulse Animation *\/\n  .nl-live-badge { color: var(--nl-red); display: flex; align-items: center; gap: 6px; }\n  .nl-pulse-dot {\n    width: 8px;\n    height: 8px;\n    background-color: var(--nl-red);\n    border-radius: 50%;\n    display: inline-block;\n    animation: nlPulse 1.4s infinite ease-in-out;\n  }\n  @keyframes nlPulse {\n    0%, 100% { opacity: 0.3; transform: scale(0.9); }\n    50% { opacity: 1; transform: scale(1.1); }\n  }\n\n  \/* Skip layout\/paint work for heavy sections until the user scrolls near them. *\/\n  .nl-lazy-render {\n    content-visibility: auto;\n    contain-intrinsic-size: 0 800px;\n  }\n\n  \/* Respect users who've asked for less motion *\/\n  @media (prefers-reduced-motion: reduce) {\n    .nl-stock-fill::after,\n    .nl-pulse-dot {\n      animation: none !important;\n    }\n  }\n\n  \/* Pause animations off-screen *\/\n  .nl-anim-paused .nl-stock-fill::after,\n  .nl-anim-paused .nl-pulse-dot {\n    animation-play-state: paused;\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"nl-mobile-engine\"\u003e\n\u003c!-- CONTAINER 1: Stock Status Box --\u003e\n\u003cdiv class=\"nl-brutal-card\"\u003e\n\u003cdiv class=\"nl-flex-between\"\u003e\n\u003cspan style=\"font-size: 0.9rem; font-weight: 800;\" class=\"nl-tech-mono\"\u003eGhost-Denim Stock Status\u003c\/span\u003e \u003cspan class=\"nl-live-badge\"\u003e\u003cspan class=\"nl-pulse-dot\"\u003e\u003c\/span\u003eLIVE\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nl-stock-scan-wrapper\"\u003e\n\u003cdiv class=\"nl-stock-fill nl-flex-center\"\u003e\u003cspan style=\"color: #ffffff; font-size: 9px; letter-spacing: 0.5px; position: absolute; width: 100%; text-align: center;\" class=\"nl-header-font\"\u003eONLY 32 PIECES LEFT!\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp style=\"margin: 0; font-size: 0.85rem; line-height: 1.5; font-weight: 500;\"\u003eLimited drop. Once these \u003cstrong\u003e32\u003c\/strong\u003e pieces sell out, the Ghost-Denim drop is archived forever.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- CONTAINER 2: Review Switcher --\u003e\n\u003cdiv class=\"nl-brutal-card\"\u003e\n\u003cinput class=\"nl-tab-input\" name=\"review-group\" id=\"review-ig\" type=\"radio\"\u003e \u003cinput checked class=\"nl-tab-input\" name=\"review-group\" id=\"review-tp\" type=\"radio\"\u003e\n\u003cdiv class=\"nl-tab-headers\"\u003e\n\u003clabel class=\"nl-tab-trigger nl-header-font\" for=\"review-tp\" id=\"label-tp\"\u003eTRUSTPILOT\u003c\/label\u003e\u003clabel class=\"nl-tab-trigger nl-header-font\" for=\"review-ig\" id=\"label-ig\"\u003eINSTAGRAM\u003c\/label\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"nl-tab-content\"\u003e\n\u003c!-- Trustpilot Node --\u003e\n\u003cdiv class=\"nl-tab-panel\" id=\"panel-tp\"\u003e\n\u003cdiv style=\"display: flex; gap: 8px; align-items: center; margin-bottom: 8px;\"\u003e\n\u003cdiv class=\"nl-tp-stars\"\u003e\n\u003cdiv class=\"nl-star-badge\"\u003e★\u003c\/div\u003e\n\u003cdiv class=\"nl-star-badge\"\u003e★\u003c\/div\u003e\n\u003cdiv class=\"nl-star-badge\"\u003e★\u003c\/div\u003e\n\u003cdiv class=\"nl-star-badge\"\u003e★\u003c\/div\u003e\n\u003cdiv class=\"nl-star-badge\"\u003e★\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan style=\"font-size: 12px; font-weight: 900;\" class=\"nl-header-font\"\u003eTrustpilot\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cp style=\"margin: 0; font-style: italic; font-size: 0.88rem; line-height: 1.45;\"\u003e\"bro this shirt is genuinely heavy as fuck. i've worn essentials and gallery dept, and this shit sits in the exact same weight class. the drape is wild. paid £75 instead of like £150 and it looks cleaner honestly.\"\u003c\/p\u003e\n\u003cdiv style=\"font-size: 10px; margin-top: 8px; opacity: 0.7;\" class=\"nl-tech-mono\"\u003e— JORDAN M., LONDON\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Instagram Node --\u003e\n\u003cdiv class=\"nl-tab-panel\" id=\"panel-ig\"\u003e\n\u003cdiv style=\"display: flex; gap: 8px; align-items: center; margin-bottom: 8px;\"\u003e\n\u003cspan style=\"color: var(--nl-red); font-size: 14px;\"\u003e★★★★★\u003c\/span\u003e \u003csvg style=\"width: 18px; height: 18px; display: inline-block; vertical-align: middle;\" viewbox=\"0 0 24 24\" class=\"nl-ig-logo\"\u003e\n            \u003cdefs\u003e\n              \u003clineargradient id=\"ig-gradient\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\"\u003e\n                \u003cstop offset=\"0%\" stop-color=\"#fdf497\"\u003e\u003c\/stop\u003e\n                \u003cstop offset=\"5%\" stop-color=\"#fdf497\"\u003e\u003c\/stop\u003e\n                \u003cstop offset=\"45%\" stop-color=\"#fd5949\"\u003e\u003c\/stop\u003e\n                \u003cstop offset=\"60%\" stop-color=\"#d6249f\"\u003e\u003c\/stop\u003e\n                \u003cstop offset=\"90%\" stop-color=\"#285aeb\"\u003e\u003c\/stop\u003e\n              \u003c\/lineargradient\u003e\n            \u003c\/defs\u003e\n            \u003cpath d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.051.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z\" fill=\"url(#ig-gradient)\"\u003e\u003c\/path\u003e\n          \u003c\/svg\u003e\n\u003c\/div\u003e\n\u003cp style=\"margin: 0; font-style: italic; font-size: 0.9rem; line-height: 1.5;\"\u003e\"bro i just wish you could feel this through the screen. this is amazing for me.\"\u003c\/p\u003e\n\u003cdiv style=\"font-size: 10px; margin-top: 8px; opacity: 0.7;\" class=\"nl-tech-mono\"\u003e— @THEREGOWOOT\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CONTAINER 3: Why It's £69.99 --\u003e\n\u003cdiv class=\"nl-brutal-card\"\u003e\n\u003ch3 style=\"font-size: 1.05rem; margin: 0 0 16px 0;\" class=\"nl-header-font\"\u003eTHE REALITY CHECK - WHY ITS ONLY £69.99\u003c\/h3\u003e\n\u003cdiv style=\"font-size: 0.85rem; line-height: 1.5;\"\u003e\n\u003cdiv style=\"margin-bottom: 14px;\" class=\"nl-reality-bullet\"\u003e\n\u003cspan style=\"color: var(--nl-red);\"\u003e■\u003c\/span\u003e \u003cspan\u003e\u003cstrong\u003eCult over margin.\u003c\/strong\u003e We're independent — we want this on the streets now, not squeezing profit on Drop 1.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin-bottom: 14px;\" class=\"nl-reality-bullet\"\u003e\n\u003cspan style=\"color: var(--nl-red);\"\u003e■\u003c\/span\u003e \u003cspan\u003e\u003cstrong\u003eThe Founders Kit breaks even.\u003c\/strong\u003e £99.99 for tee + hoodie + sweatpants, calculated to cover cost, not profit.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"margin-bottom: 0;\" class=\"nl-reality-bullet\"\u003e\n\u003cspan style=\"color: var(--nl-red);\"\u003e■\u003c\/span\u003e \u003cspan\u003e\u003cstrong\u003eCapped at 60 units.\u003c\/strong\u003e Not a gimmick — once it's gone, it's gone.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Dynamic Functional Specs Matrix Grid --\u003e\n\u003cdiv class=\"nl-spec-matrix\"\u003e\n\u003cdiv class=\"nl-matrix-item\"\u003e⚖️\u003cbr\u003e340 GSM\u003c\/div\u003e\n\u003cdiv class=\"nl-matrix-item\"\u003e🏋️\u003cbr\u003e10 OZ COTTON\u003c\/div\u003e\n\u003cdiv class=\"nl-matrix-item\"\u003e👕\u003cbr\u003eBOXY OVERSIZED FIT\u003c\/div\u003e\n\u003cdiv class=\"nl-matrix-item\"\u003e❤️\u003cbr\u003e10% TO CHARITY\u003c\/div\u003e\n\u003cdiv class=\"nl-matrix-item\"\u003e🔒\u003cbr\u003eSECURE PAYMENTS\u003c\/div\u003e\n\u003cdiv class=\"nl-matrix-item\"\u003e↩️\u003cbr\u003eFREE SIZING FX\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- RAW EDITORIAL DESCRIPTION --\u003e\n\u003cdiv class=\"nl-raw-editorial nl-lazy-render\"\u003e\n\u003cp\u003eWelcome to the \u003cstrong\u003eSpirit Realm\u003c\/strong\u003e. We don't know how it got here, but our suppliers have connections. Built from a \u003cstrong\u003e10 oz (340 GSM)\u003c\/strong\u003e heavyweight cloudy cotton with a boxy, drop-shoulder fit that feels like it doesn't belong in the mortal realm.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003cem\u003e \u003c\/em\u003eOnce you wear it, you might not be able to take it off. A lot of Spirits have been known to do that to ultra soft tees.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- SIZE CHART TABLE --\u003e\n\u003cdiv class=\"nl-lazy-render\"\u003e\n\u003ch1 class=\"nl-header-font\" style=\"font-size: 1.4rem; margin-bottom: 12px;\"\u003e\u003cspan class=\"nl-text-gradient\"\u003eSize CHART\u003c\/span\u003e\u003c\/h1\u003e\n\u003cinput checked class=\"nl-tab-input\" name=\"size-converter\" id=\"size-in\" type=\"radio\"\u003e \u003cinput class=\"nl-tab-input\" name=\"size-converter\" id=\"size-cm\" type=\"radio\"\u003e\n\u003cdiv class=\"nl-size-switch-panel\"\u003e\n\u003clabel class=\"nl-size-btn nl-tech-mono\" for=\"size-in\" id=\"label-in\"\u003eINCHES\u003c\/label\u003e \u003clabel class=\"nl-size-btn nl-tech-mono\" for=\"size-cm\" id=\"label-cm\"\u003eCM\u003c\/label\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"border: 2.5px solid #3D0A0A; border-radius: 12px; overflow: hidden; box-shadow: 4px 4px 0px rgba(61,10,10,0.12);\" class=\"nl-size-container\"\u003e\n\u003ctable class=\"nl-mobile-table\"\u003e\n\u003cthead\u003e\n\u003ctr style=\"background: rgba(61, 10, 10, 0.05);\"\u003e\n\u003cth style=\"font-size: 10px; width: 28%;\" class=\"nl-header-font\"\u003e\u003c\/th\u003e\n\u003cth class=\"nl-header-font\" style=\"width: 18%;\"\u003eS\u003c\/th\u003e\n\u003cth class=\"nl-header-font\" style=\"width: 18%;\"\u003eM\u003c\/th\u003e\n\u003cth class=\"nl-header-font\" style=\"width: 18%;\"\u003eL\u003c\/th\u003e\n\u003cth class=\"nl-header-font\" style=\"width: 18%;\"\u003eXL\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody class=\"nl-size-row-group\" id=\"rows-in\"\u003e\n\u003ctr\u003e\n\u003ctd class=\"nl-header-font\"\u003eLength\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e25.59\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e26.38\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e27.17\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e27.95\"\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"nl-header-font\"\u003eShoulder\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e22.44\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e23.23\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e24.02\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e24.80\"\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"nl-header-font\"\u003eChest\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e24.02\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e24.80\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e25.59\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e26.38\"\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"nl-header-font\"\u003eSleeve length\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e10.04\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e10.43\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e10.83\"\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e11.22\"\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003ctbody class=\"nl-size-row-group\" id=\"rows-cm\"\u003e\n\u003ctr\u003e\n\u003ctd class=\"nl-header-font\"\u003eLength\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e65cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e67cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e69cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e71cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"nl-header-font\"\u003eShoulder\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e57cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e59cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e61cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e63cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"nl-header-font\"\u003eChest\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e61cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e63cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e65cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e67cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd class=\"nl-header-font\"\u003eSleeve length\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e25.5cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e26.5cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e27.5cm\u003c\/td\u003e\n\u003ctd class=\"nl-tech-mono\"\u003e28.5cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n  (function () {\n    var TARGET = 'Ghost-Denim';\n    var CLASS  = 'ghost-denim-custom-font';\n    var observer;\n\n    function wrap(node) {\n      if (!node.nodeValue || node.nodeValue.indexOf(TARGET) === -1) return;\n      var parent = node.parentNode;\n      if (!parent) return;\n      var frag = document.createDocumentFragment();\n      var parts = node.nodeValue.split(TARGET);\n      for (var i = 0; i \u003c parts.length; i++) {\n        if (parts[i]) frag.appendChild(document.createTextNode(parts[i]));\n        if (i \u003c parts.length - 1) {\n          var span = document.createElement('span');\n          span.className = CLASS;\n          span.textContent = TARGET;\n          frag.appendChild(span);\n        }\n      }\n      parent.replaceChild(frag, node);\n    }\n\n    function scan(root) {\n      if (!root) return;\n      if (root.nodeType === 3) { wrap(root); return; }\n      if (root.nodeType !== 1) return;\n      if (root.textContent \u0026\u0026 root.textContent.indexOf(TARGET) === -1) return;\n      var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n        acceptNode: function (node) {\n          if (!node.nodeValue || node.nodeValue.indexOf(TARGET) === -1) return NodeFilter.FILTER_REJECT;\n          var p = node.parentElement;\n          if (!p) return NodeFilter.FILTER_REJECT;\n          var tag = p.tagName;\n          if (tag === 'SCRIPT' || tag === 'STYLE' || tag === 'NOSCRIPT' ||\n              tag === 'INPUT' || tag === 'TEXTAREA') return NodeFilter.FILTER_REJECT;\n          if (p.closest('.' + CLASS)) return NodeFilter.FILTER_REJECT;\n          return NodeFilter.FILTER_ACCEPT;\n        }\n      });\n      var nodes = [];\n      while (walker.nextNode()) nodes.push(walker.currentNode);\n      nodes.forEach(wrap);\n    }\n\n    function start() {\n      var root = document.getElementById('MainContent') || document.body;\n      scan(root);\n\n      var queue = [];\n      var scheduled = false;\n      function flush() {\n        scheduled = false;\n        observer.disconnect();\n        for (var i = 0; i \u003c queue.length; i++) scan(queue[i]);\n        queue = [];\n        observer.observe(root, { childList: true, subtree: true });\n      }\n\n      observer = new MutationObserver(function (mutations) {\n        for (var i = 0; i \u003c mutations.length; i++) {\n          var added = mutations[i].addedNodes;\n          for (var j = 0; j \u003c added.length; j++) queue.push(added[j]);\n        }\n        if (!scheduled) {\n          scheduled = true;\n          if (window.requestIdleCallback) requestIdleCallback(flush, { timeout: 500 });\n          else setTimeout(flush, 300);\n        }\n      });\n      observer.observe(root, { childList: true, subtree: true });\n\n      setTimeout(function () {\n        if (observer) observer.disconnect();\n      }, 8000);\n    }\n\n    if (document.readyState === 'complete') setTimeout(start, 500);\n    else window.addEventListener('load', function () { setTimeout(start, 500); });\n  })();\n\u003c\/script\u003e \u003cscript\u003e\n(function () {\n  if (!window.location.pathname.includes('\/products\/ghost-denim-t-shirt')) return;\n\n  document.addEventListener('DOMContentLoaded', function () {\n    var selectors = [\n      '.product__media-wrapper',\n      '.product__media-container',\n      '.product__media-list',\n      '.product-single__media-wrapper',\n      '.product__photos',\n      '.product-media',\n      '[data-product-media-wrapper]'\n    ];\n\n    var container = document.querySelector(selectors.join(','));\n\n    if (!container) return;\n\n    if (getComputedStyle(container).position === 'static') {\n      container.style.position = 'relative';\n    }\n\n    var badge = document.createElement('div');\n    badge.className = 'nl-badge-wrap';\n    badge.innerHTML =\n      '\u003cspan class=\"nl-highly-rated-badge nl-highly-rated-badge--dark\"\u003e' +\n      '\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\"\u003e' +\n      '\u003cpath d=\"M10.83 5.63 Q 12 2.5 13.18 5.63 Q 14.35 8.76 17.69 8.91 Q 21.03 9.06 18.42 11.15 Q 15.8 13.24 16.7 16.47 Q 17.59 19.69 14.8 17.85 Q 12 16 9.21 17.85 Q 6.41 19.69 7.31 16.47 Q 8.2 13.24 5.59 11.15 Q 2.97 9.06 6.31 8.91 Q 9.65 8.76 10.83 5.63 Z\"\/\u003e' +\n      '\u003c\/svg\u003eHighly Rated\u003c\/span\u003e';\n\n    container.insertBefore(badge, container.firstChild);\n  });\n})();\n\u003c\/script\u003e \u003cscript\u003e\n(function () {\n  var targets = document.querySelectorAll('.nl-brutal-card');\n  if (!('IntersectionObserver' in window) || !targets.length) return;\n  var io = new IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      entry.target.classList.toggle('nl-anim-paused', !entry.isIntersecting);\n    });\n  }, { threshold: 0 });\n  targets.forEach(function (el) { io.observe(el); });\n})();\n\u003c\/script\u003e\u003c\/p\u003e","brand":"ODMPOD","offers":[{"title":"Astro Void \/ S","offer_id":51032008294567,"sku":"260728PODPQ9525#001","price":69.99,"currency_code":"GBP","in_stock":true},{"title":"Astro Void \/ M","offer_id":51032008327335,"sku":"260728PODPQ9525#002","price":69.99,"currency_code":"GBP","in_stock":true},{"title":"Astro Void \/ L","offer_id":51032008360103,"sku":"260728PODPQ9525#003","price":69.99,"currency_code":"GBP","in_stock":true},{"title":"Astro Void \/ XL","offer_id":51032008392871,"sku":"260728PODPQ9525#004","price":69.99,"currency_code":"GBP","in_stock":true},{"title":"Lunar Ash \/ S","offer_id":51032008163495,"sku":"260728PODPQ9525#005","price":69.99,"currency_code":"GBP","in_stock":true},{"title":"Lunar Ash \/ M","offer_id":51032008196263,"sku":"260728PODPQ9525#006","price":69.99,"currency_code":"GBP","in_stock":true},{"title":"Lunar Ash \/ L","offer_id":51032008229031,"sku":"260728PODPQ9525#007","price":69.99,"currency_code":"GBP","in_stock":true},{"title":"Lunar Ash \/ XL","offer_id":51032008261799,"sku":"260728PODPQ9525#008","price":69.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0764\/1510\/7239\/files\/Model_Shot_1.jpg?v=1785250117","url":"https:\/\/nolimitsclothingbrand.store\/products\/ghost-denim-tee","provider":"No Limits Clothing","version":"1.0","type":"link"}