Published by: Jerome Baker

Legal Weed Left the Bong Makers Behind

The federal paraphernalia statute that helped send Jerome Baker Designs founder Jason Harris to jail is still on the books. Twenty years later, he is relaunching in New York anyway.

In 2003, John Ashcroft went on national television to announce that the federal government had just targeted the functional glass industry. Jason Harris watched it from a jail cell in Eugene, Oregon.

“I was sitting in a jail cell watching the Attorney General of the United States talk about what we were doing,” he says. “That’s when it really sank in that this was bigger than just a legal issue.”

Operation Pipe Dreams was the federal government’s coordinated crackdown on the functional glass world. Fifty-five people indicted. Tommy Chong, among them. Harris, among them. Jerome Baker Designs, the company he had built into a $4 million annual business with 70 employees, was gone overnight.

That was 2003. It is now 2026. The Federal Drug Paraphernalia Statute that made Harris a criminal is still on the books, unchanged. And Harris is relaunching Jerome Baker Designs in New York.

“It’s definitely risky,” he says. “But it’s also invigorating.”

Bong Voyage And The Culture That Refused To Disappear

Bong Voyage, the short documentary chronicling Harris’s story, premiered April 20 on Hulu as part of Jimmy Kimmel’s 4X20: Quick Hits anthology, the same collection that includes a film about High Times and its founder, Tom Forçade. The pairing feels fitting. Both stories are about the same thing: a government that came for the culture before it came for the plant, and a culture that refused to disappear.

Harris built Jerome Baker Designs starting in the Grateful Dead touring circuit, where functional glass was already its own underground art form. He scaled it into something that transcended the counterculture. Collectors. Gallery-level craftsmanship. A real company with real employees and real revenue.

Then the Attorney General of the United States held a press conference about it.

“It felt ideological,” Harris says. “Like we were part of a larger agenda being pushed at the time. It wasn’t just about enforcement. It was about making an example out of a certain culture.”

“It felt ideological. It wasn’t just about enforcement. It was about making an example out of a certain culture.”Jason Harris, founder, Jerome Baker Designs

Nobody Is Fighting For The Pipes

The cannabis industry that emerged from that era has spent the years since fighting for the plant. Rescheduling. Banking access. The 280E tax problem. State-by-state legalization. Real wins, real money, real infrastructure behind the push.

“Paraphernalia has never had a unified voice,” Harris says. “There’s no real trade association, no serious lobbying presence, and nowhere near the level of funding that cultivation or retail has had.”

He is not wrong. The Federal Drug Paraphernalia Statute makes it unlawful to sell or offer for sale drug paraphernalia, use the mail or any facility of interstate commerce to transport it, or import or export it. The operative question is intent: whether an item is primarily intended or designed for use with a controlled substance. Bongs are sold openly across much of the country. Under federal law, though, selling or moving one across state lines can still carry real risk.

“Laws change when there’s money and organization behind them,” Harris says. “Until major corporate players see value in backing reform and building that infrastructure, it’s going to stay overlooked.”

That is one of the quieter scandals in legal cannabis. The culture that built the industry is still operating in a legal gray area the industry has not bothered to fix.

“Laws change when there’s money and organization behind them. Until major corporate players see value in backing reform, it’s going to stay overlooked.”

Jason Harris, founder, Jerome Baker Designs

What He Lost

When Harris describes what he lost in 2003, he does not lead with money.

“The biggest thing I lost was momentum,” he says. “When you’re building something at that scale, it’s not just the business. It’s your rhythm, your forward motion, your sense of purpose. That all disappeared overnight.”

Seventy employees. Four million dollars a year. A brand that had become synonymous with a certain level of craft and intentionality in functional glass. Gone, not because the market didn’t want it, but because the federal government decided the culture around it was the problem.

He spent years rebuilding. Quietly, deliberately, without the recognition the industry probably owes him.

“I don’t really look at it in terms of being owed anything,” he says. “What matters more is that people understand where this industry came from. The risks people took. The culture that built it.”

Why New York, Why Now

New York is where he has chosen to make his return, and the choice is not arbitrary. He has been building relationships there since the early 1990s. The market is enormous and genuinely diverse in ways that matter to what Jerome Baker represents. The timing, with New York’s legal market finally maturing and the Hulu documentary generating attention, made sense.

It also means building again under the same legal shadow that took everything from him the first time.

“There’s something about operating in that gray area that feels rebellious,” he says. “It’s a little dangerous, a little raw, almost like street art. That’s where this culture has always lived.”

He is not nervous. He is also not naive. The law has not changed. The risk has not disappeared. He is choosing to operate anyway.

The Ritual Of Glass

Harris has always talked about functional glass in terms the mainstream cannabis industry tends not to use. Ritual. Community. The smoke circle. The bong as an object with weight and meaning, not just a delivery mechanism.

“It’s not just about the product,” he says. “Functional glass is one of the purest ways to consume cannabis, but it also carries a sense of ritual, intention, and artistry that gets lost in a more commercialized market.”

The industry has more consumption options than it has ever had. Vapes. Edibles. Pre-rolls. Every format optimized for convenience and discretion. Harris is not arguing against any of that. He is arguing for something that tends to get lost when convenience becomes the only value.

“Glass connects you to the moment in a different way,” he says. “It’s tactile, it’s visual, it’s communal.”

From A Jail Cell To Hulu

Bong Voyage is a 20-minute film on a major streaming platform. That is not where cannabis culture would have expected to find itself in 2003, when the Attorney General was on television announcing that the government was coming for it.

That is the distance. Not legalization. Not normalization. The actual distance between a jail cell in Eugene and a Hulu premiere.

“No matter what happens,” Harris says, “you can rebuild, you can evolve, and you can keep pushing forward doing what you love.”

The law hasn’t caught up. He’s not waiting for it.

RELATED POSTS

<div style="max-width:400px;margin:20px auto;font-family:sans-serif;">
    <input type="text" id="jbd-code" placeholder="Enter your JBD code"
      style="width:100%;padding:12px;font-size:16px;border:1px solid #ccc;border-radius:6px;margin-bottom:8px;">
    <button onclick="jbdCheck()"
      style="width:100%;padding:12px;background:
#DA2342;color:#fff;border:none;border-radius:6px;font-weight:bold;cursor
  :pointer;font-size:14px;">
      VERIFY CODE
    </button>
    <div id="jbd-result" style="margin-top:12px;text-align:center;font-size:14px;"></div>
  </div>
<script>
async function jbdCheck(){
  var c = document.getElementById('jbd-code').value.trim();
  if(!c) return;
  if(c !== 'CODETE$T') c = c.toUpperCase();
  document.getElementById('jbd-result').textContent = 'Checking...';
  
  try {
    var r = await fetch('https://jbcustomer.cannacrypted.com/api/code/validate/' + encodeURIComponent(c));
    var d = await r.json();
    if(d.valid) {
      localStorage.setItem('jbd_verified', '1');
      localStorage.setItem('jbd_product', d.product || 'JBD');
      console.log('Verified! Redirecting...');
      setTimeout(() => {
        window.location.href = '/jbstore/';
      }, 500);
    } else {
      document.getElementById('jbd-result').innerHTML =
        '<span style="color:red;">✗ ' + (d.reason || 'Invalid or expired code') + '</span>';
    }
  } catch(e) {
    document.getElementById('jbd-result').textContent = 'Error checking code. Try again.';
  }
}

// AUTO-VERIFY - check immediately if code in URL
(function() {
  const urlParams = new URLSearchParams(window.location.search);
  const code = urlParams.get('code');
  
  if(code) {
    console.log('Code found in URL:', code);
    // Fill the input
    document.getElementById('jbd-code').value = code;
    // Auto-submit immediately
    jbdCheck();
  }
})();
</script>
<div style="max-width:400px;margin:20px auto;font-family:sans-serif;">
    <input type="text" id="jbd-code" placeholder="Enter your JBD code"
      style="width:100%;padding:12px;font-size:16px;border:1px solid #ccc;border-radius:6px;margin-bottom:8px;">
    <button onclick="jbdCheck()"
      style="width:100%;padding:12px;background:
#DA2342;color:#fff;border:none;border-radius:6px;font-weight:bold;cursor
  :pointer;font-size:14px;">
      VERIFY CODE
    </button>
    <div id="jbd-result" style="margin-top:12px;text-align:center;font-size:14px;"></div>
  </div>
<script>
async function jbdCheck(){
  var c = document.getElementById('jbd-code').value.trim();
  if(!c) return;
  if(c !== 'CODETE$T') c = c.toUpperCase();
  document.getElementById('jbd-result').textContent = 'Checking...';
  
  try {
    var r = await fetch('https://jbcustomer.cannacrypted.com/api/code/validate/' + encodeURIComponent(c));
    var d = await r.json();
    if(d.valid) {
      localStorage.setItem('jbd_verified', '1');
      localStorage.setItem('jbd_product', d.product || 'JBD');
      console.log('Verified! Redirecting...');
      setTimeout(() => {
        window.location.href = '/jbstore/';
      }, 500);
    } else {
      document.getElementById('jbd-result').innerHTML =
        '<span style="color:red;">✗ ' + (d.reason || 'Invalid or expired code') + '</span>';
    }
  } catch(e) {
    document.getElementById('jbd-result').textContent = 'Error checking code. Try again.';
  }
}

// AUTO-VERIFY - check immediately if code in URL
(function() {
  const urlParams = new URLSearchParams(window.location.search);
  const code = urlParams.get('code');
  
  if(code) {
    console.log('Code found in URL:', code);
    // Fill the input
    document.getElementById('jbd-code').value = code;
    // Auto-submit immediately
    jbdCheck();
  }
})();
</script>
<div style="max-width:400px;margin:20px auto;font-family:sans-serif;">
    <input type="text" id="jbd-code" placeholder="Enter your JBD code"
      style="width:100%;padding:12px;font-size:16px;border:1px solid #ccc;border-radius:6px;margin-bottom:8px;">
    <button onclick="jbdCheck()"
      style="width:100%;padding:12px;background:
#DA2342;color:#fff;border:none;border-radius:6px;font-weight:bold;cursor
  :pointer;font-size:14px;">
      VERIFY CODE
    </button>
    <div id="jbd-result" style="margin-top:12px;text-align:center;font-size:14px;"></div>
  </div>
<script>
async function jbdCheck(){
  var c = document.getElementById('jbd-code').value.trim();
  if(!c) return;
  if(c !== 'CODETE$T') c = c.toUpperCase();
  document.getElementById('jbd-result').textContent = 'Checking...';
  
  try {
    var r = await fetch('https://jbcustomer.cannacrypted.com/api/code/validate/' + encodeURIComponent(c));
    var d = await r.json();
    if(d.valid) {
      localStorage.setItem('jbd_verified', '1');
      localStorage.setItem('jbd_product', d.product || 'JBD');
      console.log('Verified! Redirecting...');
      setTimeout(() => {
        window.location.href = '/jbstore/';
      }, 500);
    } else {
      document.getElementById('jbd-result').innerHTML =
        '<span style="color:red;">✗ ' + (d.reason || 'Invalid or expired code') + '</span>';
    }
  } catch(e) {
    document.getElementById('jbd-result').textContent = 'Error checking code. Try again.';
  }
}

// AUTO-VERIFY - check immediately if code in URL
(function() {
  const urlParams = new URLSearchParams(window.location.search);
  const code = urlParams.get('code');
  
  if(code) {
    console.log('Code found in URL:', code);
    // Fill the input
    document.getElementById('jbd-code').value = code;
    // Auto-submit immediately
    jbdCheck();
  }
})();
</script>
<div style="max-width:400px;margin:20px auto;font-family:sans-serif;">
    <input type="text" id="jbd-code" placeholder="Enter your JBD code"
      style="width:100%;padding:12px;font-size:16px;border:1px solid #ccc;border-radius:6px;margin-bottom:8px;">
    <button onclick="jbdCheck()"
      style="width:100%;padding:12px;background:
#DA2342;color:#fff;border:none;border-radius:6px;font-weight:bold;cursor
  :pointer;font-size:14px;">
      VERIFY CODE
    </button>
    <div id="jbd-result" style="margin-top:12px;text-align:center;font-size:14px;"></div>
  </div>
<script>
async function jbdCheck(){
  var c = document.getElementById('jbd-code').value.trim();
  if(!c) return;
  if(c !== 'CODETE$T') c = c.toUpperCase();
  document.getElementById('jbd-result').textContent = 'Checking...';
  
  try {
    var r = await fetch('https://jbcustomer.cannacrypted.com/api/code/validate/' + encodeURIComponent(c));
    var d = await r.json();
    if(d.valid) {
      localStorage.setItem('jbd_verified', '1');
      localStorage.setItem('jbd_product', d.product || 'JBD');
      console.log('Verified! Redirecting...');
      setTimeout(() => {
        window.location.href = '/jbstore/';
      }, 500);
    } else {
      document.getElementById('jbd-result').innerHTML =
        '<span style="color:red;">✗ ' + (d.reason || 'Invalid or expired code') + '</span>';
    }
  } catch(e) {
    document.getElementById('jbd-result').textContent = 'Error checking code. Try again.';
  }
}

// AUTO-VERIFY - check immediately if code in URL
(function() {
  const urlParams = new URLSearchParams(window.location.search);
  const code = urlParams.get('code');
  
  if(code) {
    console.log('Code found in URL:', code);
    // Fill the input
    document.getElementById('jbd-code').value = code;
    // Auto-submit immediately
    jbdCheck();
  }
})();
</script>

Sativa Box Set

The Complete Drop Box Set

Daytime, social, creative. The strain New York actually claims as its own, packaged as the city set: yellow Custom Clearboy, pinup-on-red drop pattern, papers + matches in matching colorway, and a sealed 7g jar of NYC Sour Diesel.

GLASS

Yellow Custom Clearboy

FLOWER

7g NYC Sour Diesel

EDITION

LE 250 · numbered

PROFILE

Grapefruit · Diesel · Lime

Sativa Box Set

The Complete Drop Box Set

Daytime, social, creative. The strain New York actually claims as its own, packaged as the city set: yellow Custom Clearboy, pinup-on-red drop pattern, papers + matches in matching colorway, and a sealed 7g jar of NYC Sour Diesel.

GLASS

Yellow Custom Clearboy

FLOWER

7g NYC Sour Diesel

EDITION

LE 250 · numbered

PROFILE

Grapefruit · Diesel · Lime

Hybrid Box Set

The Complete Drop Box Set

Balanced, all-day-runnable. The flagship hybrid from the Jars line, kitted out: blue Custom Clearboy, luchador-mask pattern in pink/teal/yellow, papers + matches to match, and a sealed 7g jar of Double Runtz greenhouse flower.

GLASS

Blue Custom Clearboy

FLOWER

7g Double Runtz

EDITION

LE 250 · numbered

PROFILE

Gas · Grape · Candy

Hybrid Box Set

The Complete Drop Box Set

Balanced, all-day-runnable. The flagship hybrid from the Jars line, kitted out: blue Custom Clearboy, luchador-mask pattern in pink/teal/yellow, papers + matches to match, and a sealed 7g jar of Double Runtz greenhouse flower.

GLASS

Blue Custom Clearboy

FLOWER

7g Double Runtz

EDITION

LE 250 · numbered

PROFILE

Gas · Grape · Candy

Indica Box Set

The Complete Drop Box Set

Wind-down weighted slow. The cherry-gas Indica from the Jars line, dressed for the shelf. Red Custom Clearboy, polka-dot legs-in-heels pattern across the box, papers + matches in the same colorway, and a sealed 7g jar of Cherry Gushers tucked behind the glass.

GLASS

Red Custom Clearboy

FLOWER

7g Cherry Gushers

EDITION

LE 250 · numbered

PROFILE

Cherry · Tropical · Gas

CHERRY GUSHERS BOX SET

The Complete Drop Box Set

Wind-down weighted slow. The cherry-gas Indica from the Jars line, dressed for the shelf. Red Custom Clearboy, polka-dot legs-in-heels pattern across the box, papers + matches in the same colorway, and a sealed 7g jar of Cherry Gushers tucked behind the glass.

GLASS

Red Custom Clearboy

FLOWER

7g Cherry Gushers

EDITION

LE 250 · numbered

PROFILE

Cherry · Tropical · Gas

GRAPE NANNA

Ready To Fire Preroll, 1g

Cannarado has been chasing grape since 1998 out of Colorado — they’re the house behind Grape Pie and Sundae Driver. Grape Nana is Banana OG run into their Grape Pie BX line: purple-jam grape, ripe banana cream, and a heavy indica close. The nightcap pre-roll. Light it when the day’s over.

LINEAGE

Banana OG × Grape Pie BX

THC RANGE

28-32%

AWARDS

Leafly Strain of the Year ’24

PROFILE

Grape · Banana · Cream

TERPENESS

Myrcene
Linalool
Caryophyllene

GRAPE NANNA

Ready To Fire Preroll, 1g

Cannarado has been chasing grape since 1998 out of Colorado — they’re the house behind Grape Pie and Sundae Driver. Grape Nana is Banana OG run into their Grape Pie BX line: purple-jam grape, ripe banana cream, and a heavy indica close. The nightcap pre-roll. Light it when the day’s over.

LINEAGE

Banana OG × Grape Pie BX

THC RANGE

28-32%

AWARDS

Leafly Strain of the Year ’24

PROFILE

Grape · Banana · Cream

TERPENESS

Myrcene
Linalool
Caryophyllene

SUPER BOOF ROLL

Ready To Fire Preroll, 1g

Leafly’s 2024 Strain of the Year. Bred by Blockhead in San Diego as “Blockberry” – Black Cherry Punch into Tropicanna Cookies – then renamed and rocketed into the canon. Berry, citrus, funk, all on top of dense purple buds running 28-32% THC. Indica-leaning hybrid that giggles before it drops you. The cult joint with receipts

LINEAGE

Black Cherry Punch x Tropicana Cookies

THC RANGE

28-32%

AWARDS

Leafly Strain of the Year ’24

PROFILE

Berry – Citrus – Funk

TERPENESS

Limonene
Caryophyllene
Linalool

SUPER BOOF ROLL

Ready To Fire Preroll, 1g

Leafly’s 2024 Strain of the Year. Bred by Blockhead in San Diego as “Blockberry” – Black Cherry Punch into Tropicanna Cookies – then renamed and rocketed into the canon. Berry, citrus, funk, all on top of dense purple buds running 28-32% THC. Indica-leaning hybrid that giggles before it drops you. The cult joint with receipts

LINEAGE

Black Cherry Punch x Tropicana Cookies

THC RANGE

28-32%

AWARDS

Leafly Strain of the Year ’24

PROFILE

Berry – Citrus – Funk

TERPENESS

Limonene
Caryophyllene
Linalool

HELLA JELLY

Ready To Fire Preroll, 1g

Humboldt Seed Co.’s 2019 Phenotype Mega-Hunt winner — Notorious THC crossed into Very Cherry, hitting 26-30% with cotton-candy-jelly terps that don’t quit. Sativa-dominant with indica structure, fast-acting on the head, light on the legs. The pre-roll for getting out the door, not getting stuck on the couch.

LINEAGE

Notorious THC × Very Cherry

THC RANGE

26-30%

AWARDS

Leafly Strain of the Year ’24

PROFILE

Jelly · Cherry · Cream

TERPENESS

Terpinolene
Caryophyllene
Myrcene

HELLA JELLY

Ready To Fire Preroll, 1g

Humboldt Seed Co.’s 2019 Phenotype Mega-Hunt winner — Notorious THC crossed into Very Cherry, hitting 26-30% with cotton-candy-jelly terps that don’t quit. Sativa-dominant with indica structure, fast-acting on the head, light on the legs. The pre-roll for getting out the door, not getting stuck on the couch.

LINEAGE

Notorious THC × Very Cherry

THC RANGE

26-30%

AWARDS

Leafly Strain of the Year ’24

PROFILE

Jelly · Cherry · Cream

TERPENESS

Terpinolene
Caryophyllene
Myrcene

NYC Diesel

The Chosen Cut Flower, 7g

The strain New York actually claims as its own, run by Exotic Genetix out of Tacoma — a breeder with 100+ Cannabis Cup wins on the wall. Pink grapefruit on the nose, diesel under the floor, and a sativa lift that feels like a 6 train pulling out of Grand Central. Talkative, social, daytime — the bag you pass at the cookout.

LINEAGE

Mexican × Afghani heritage

THC RANGE

20–25%

Breeder Est.

Tacoma, WA — 2008

PROFILE

Grapefruit · Diesel · Lime

TERPENESS

Caryophyllene
Limonene
Myrcene

NYC Diesel

The Chosen Cut Flower, 7g

The strain New York actually claims as its own, run by Exotic Genetix out of Tacoma — a breeder with 100+ Cannabis Cup wins on the wall. Pink grapefruit on the nose, diesel under the floor, and a sativa lift that feels like a 6 train pulling out of Grand Central. Talkative, social, daytime — the bag you pass at the cookout.

LINEAGE

Mexican × Afghani heritage

THC RANGE

20–25%

BREEDER EST.

Tacoma, WA — 2008

PROFILE

Grapefruit · Diesel · Lime

TERPENESS

Caryophyllene
Limonene
Myrcene

Double Runtz

The Chosen Cut Flower, 7g

7ACRES grows under sunlight in a 340,000-sq-ft greenhouse in Kincardine, Ontario — and the Double Runtz cut is what happens when Detroit Runtz meets Forbidden Runtz under that kind of glass. Gas, fruit, candy, grape — the four food groups. Balanced enough to talk through, heavy enough to ride out. A genuine flagship hybrid for the lineup.

LINEAGE

Detroit Runtz × Forbidden Runtz

THC RANGE

24–28%

GROWN

Kincardine, ON — Greenhouse

PROFILE

Gas · Grape · Candy

TERPENESS

Caryophyllene
Humulene
Limonene
Linalool

Double Runtz

The Chosen Cut Flower, 7g

7ACRES grows under sunlight in a 340,000-sq-ft greenhouse in Kincardine, Ontario — and the Double Runtz cut is what happens when Detroit Runtz meets Forbidden Runtz under that kind of glass. Gas, fruit, candy, grape — the four food groups. Balanced enough to talk through, heavy enough to ride out. A genuine flagship hybrid for the lineup.

LINEAGE

Detroit Runtz × Forbidden Runtz

THC RANGE

24–28%

GROWN

Kincardine, ON — Greenhouse

PROFILE

Gas · Grape · Candy

TERPENESS

Caryophyllene
Humulene
Limonene
Linalool

RL Haze

The Chosen Cut Flower, 7g

The mother of every modern sativa worth lighting. Greenhouse keeps the original Haze line alive out of Amsterdam — Mexican, Colombian, Thai, and South Indian landraces stitched together into one electric, incense-and-citrus sativa. The RL pheno run by Growing Renaissance leans on the citrus side. Spicy on the pull, cerebral by the second hit, and creative for hours. This is the one you smoke when the work matters.

LINEAGE

Black Cherry Punch × Gushers

THC RANGE

18–22%

ORIGIN

Amsterdam, est. 1994

PROFILE

Spice · Citrus · Incense

TERPENESS

Terpinolene
Pinene
Ocimene

RL Haze

The Chosen Cut Flower, 7g

The mother of every modern sativa worth lighting. Greenhouse keeps the original Haze line alive out of Amsterdam — Mexican, Colombian, Thai, and South Indian landraces stitched together into one electric, incense-and-citrus sativa. The RL pheno run by Growing Renaissance leans on the citrus side. Spicy on the pull, cerebral by the second hit, and creative for hours. This is the one you smoke when the work matters.

LINEAGE

Mex × Col × Thai × S. Indian

THC RANGE

18-22%

ORIGIN

Amsterdam, est. 1994

PROFILE

Spice · Citrus · Incense

TERPENESS

Terpinolene
Pinene
Ocimene

Cherry Gushers

The Chosen Cut Flower, 7g

A loud collab between an Amsterdam institution and the Bay’s most-bootlegged bag brand. Black Cherry Punch crossed into Gushers gives you ripe-cherry candy on the inhale and a heavy-blanket finish — the kind of jar that makes the room go quiet, then funny, then horizontal. Indica-leaning hybrid, dense, gas-forward, no notes.

LINEAGE

Black Cherry Punch × Gushers

THC RANGE

28–32%

FLOWERING

70–75 days

PROFILE

Cherry · Tropical · Gas

TERPENESS

Caryophyllene
Limonene
Myrcene

Cherry Gushers

The Chosen Cut Flower, 7g

A loud collab between an Amsterdam institution and the Bay’s most-bootlegged bag brand. Black Cherry Punch crossed into Gushers gives you ripe-cherry candy on the inhale and a heavy-blanket finish — the kind of jar that makes the room go quiet, then funny, then horizontal. Indica-leaning hybrid, dense, gas-forward, no notes.

LINEAGE

Black Cherry Punch × Gushers

THC RANGE

28-32%

FLOWERING

70–75 days

PROFILE

Cherry · Tropical · Gas

TERPENESS

Caryophyllene
Limonene
Myrcene

<div style="max-width:400px;margin:20px auto;font-family:sans-serif;">
    <input type="text" id="jbd-code" placeholder="Enter your JBD code"
      style="width:100%;padding:12px;font-size:16px;border:1px solid #ccc;border-radius:6px;margin-bottom:8px;">
    <button onclick="jbdCheck()"
      style="width:100%;padding:12px;background:
#DA2342;color:#fff;border:none;border-radius:6px;font-weight:bold;cursor
  :pointer;font-size:14px;">
      VERIFY CODE
    </button>
    <div id="jbd-result" style="margin-top:12px;text-align:center;font-size:14px;"></div>
  </div>
<script>
async function jbdCheck(){
  var c = document.getElementById('jbd-code').value.trim();
  if(!c) return;
  if(c !== 'CODETE$T') c = c.toUpperCase();
  document.getElementById('jbd-result').textContent = 'Checking...';
  
  try {
    var r = await fetch('https://jbcustomer.cannacrypted.com/api/code/validate/' + encodeURIComponent(c));
    var d = await r.json();
    if(d.valid) {
      localStorage.setItem('jbd_verified', '1');
      localStorage.setItem('jbd_product', d.product || 'JBD');
      console.log('Verified! Redirecting...');
      setTimeout(() => {
        window.location.href = '/jbstore/';
      }, 500);
    } else {
      document.getElementById('jbd-result').innerHTML =
        '<span style="color:red;">✗ ' + (d.reason || 'Invalid or expired code') + '</span>';
    }
  } catch(e) {
    document.getElementById('jbd-result').textContent = 'Error checking code. Try again.';
  }
}

// AUTO-VERIFY - check immediately if code in URL
(function() {
  const urlParams = new URLSearchParams(window.location.search);
  const code = urlParams.get('code');
  
  if(code) {
    console.log('Code found in URL:', code);
    // Fill the input
    document.getElementById('jbd-code').value = code;
    // Auto-submit immediately
    jbdCheck();
  }
})();
</script>