{"id":3155,"date":"2026-06-09T22:10:03","date_gmt":"2026-06-09T22:10:03","guid":{"rendered":"https:\/\/beanjammingcoffee.com\/?page_id=3155"},"modified":"2026-06-10T00:28:50","modified_gmt":"2026-06-10T00:28:50","slug":"coffee-lab","status":"publish","type":"page","link":"https:\/\/beanjammingcoffee.com\/de\/coffee-lab\/","title":{"rendered":"Coffee Lab"},"content":{"rendered":"<div class=\"grve-section grve-row-section grve-fullwidth-background grve-padding-top-1x grve-padding-bottom-1x grve-with-bg-transparent\" data-header-color=\"default\"><div class=\"grve-container\"><div class=\"grve-row grve-bookmark grve-columns-gap-default grve-mobile-vertical-gap-30\"><div class=\"grve-column wpb_column grve-bookmark grve-column-1  grve-with-bg-transparent\"><div class=\"grve-column-wrapper\"><div class=\"grve-column-content\" >\n\t<div class=\"wpb_raw_code wpb_raw_html wpb_content_element\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<section class=\"bjc-coffee-lab-html\" id=\"coffee-lab\">\n  <style>\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@300;400;500;600;700;800;900&display=swap');\n\n    .bjc-coffee-lab-html {\n      --bjc-green: #1D4C23;\n      --bjc-lime: #E5FF00;\n      --bjc-cream: #F3E8CD;\n      --bjc-white: #ffffff;\n      --bjc-black: #111111;\n      --bjc-muted: rgba(29, 76, 35, 0.72);\n      --bjc-border: rgba(29, 76, 35, 0.14);\n      --bjc-light-border: rgba(255, 255, 255, 0.16);\n      --bjc-shadow: 0 24px 70px rgba(29, 76, 35, 0.12);\n\n      width: 100%;\n      max-width: 100%;\n      font-family: \"DM Sans\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n      background: var(--bjc-cream);\n      color: var(--bjc-green);\n      overflow: hidden;\n      -webkit-font-smoothing: antialiased;\n      -moz-osx-font-smoothing: grayscale;\n    }\n\n    .bjc-coffee-lab-html,\n    .bjc-coffee-lab-html * {\n      box-sizing: border-box;\n    }\n\n    .bjc-coffee-lab-html * {\n      max-width: 100%;\n    }\n\n    .bjc-lab-wrap {\n      width: min(1180px, calc(100% - 32px));\n      margin: 0 auto;\n    }\n\n    .bjc-lab-hero {\n      position: relative;\n      padding: clamp(72px, 9vw, 132px) 0 clamp(56px, 8vw, 96px);\n      background:\n        radial-gradient(circle at 88% 10%, rgba(229,255,0,0.28) 0 0.5%, transparent 19%),\n        radial-gradient(circle at 8% 84%, rgba(243,232,205,0.08) 0 16%, transparent 36%),\n        var(--bjc-green);\n      color: var(--bjc-white);\n      isolation: isolate;\n    }\n\n    .bjc-lab-hero::before {\n      content: \"\";\n      position: absolute;\n      inset: 0;\n      opacity: 0.13;\n      background-image:\n        linear-gradient(90deg, rgba(255,255,255,0.4) 1px, transparent 1px),\n        linear-gradient(180deg, rgba(255,255,255,0.4) 1px, transparent 1px);\n      background-size: 54px 54px;\n      mask-image: radial-gradient(circle at center, black, transparent 72%);\n      -webkit-mask-image: radial-gradient(circle at center, black, transparent 72%);\n      pointer-events: none;\n      z-index: -1;\n    }\n\n    .bjc-lab-hero-grid {\n      display: grid;\n      grid-template-columns: minmax(0, 1.12fr) minmax(310px, 0.68fr);\n      gap: clamp(34px, 7vw, 88px);\n      align-items: end;\n    }\n\n    .bjc-lab-kicker {\n      display: inline-flex;\n      align-items: center;\n      gap: 10px;\n      width: fit-content;\n      margin-bottom: 24px;\n      padding: 9px 14px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.08);\n      border: 1px solid rgba(255,255,255,0.18);\n      color: var(--bjc-white);\n      font-size: 12px;\n      font-weight: 900;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n    }\n\n    .bjc-lab-kicker::before {\n      content: \"\";\n      width: 9px;\n      height: 9px;\n      border-radius: 999px;\n      background: var(--bjc-lime);\n      box-shadow: 0 0 0 5px rgba(229,255,0,0.18);\n      flex: 0 0 auto;\n    }\n\n    .bjc-lab-hero h1 {\n      max-width: 920px;\n      margin: 0;\n      color: var(--bjc-white);\n      font-size: clamp(48px, 8.5vw, 116px);\n      line-height: 0.88;\n      letter-spacing: -0.085em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-hero h1 span {\n      color: var(--bjc-lime);\n    }\n\n    .bjc-lab-hero-copy {\n      max-width: 650px;\n      margin: 28px 0 0;\n      color: rgba(255,255,255,0.78);\n      font-size: clamp(18px, 2vw, 22px);\n      line-height: 1.48;\n      font-weight: 400;\n    }\n\n    .bjc-lab-hero-actions {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 12px;\n      margin-top: 34px;\n    }\n\n    .bjc-lab-btn {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 50px;\n      padding: 14px 22px;\n      border-radius: 999px;\n      border: 1px solid transparent;\n      font-size: 15px;\n      line-height: 1;\n      font-weight: 900;\n      text-decoration: none !important;\n      transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;\n      touch-action: manipulation;\n    }\n\n    .bjc-lab-btn:hover {\n      transform: translateY(-2px);\n    }\n\n    .bjc-lab-btn-primary {\n      background: var(--bjc-lime);\n      color: var(--bjc-green) !important;\n      box-shadow: 0 16px 34px rgba(0,0,0,0.16);\n    }\n\n    .bjc-lab-btn-secondary {\n      background: rgba(255,255,255,0.08);\n      color: var(--bjc-white) !important;\n      border-color: rgba(255,255,255,0.22);\n    }\n\n    .bjc-lab-hero-note {\n      position: relative;\n      padding: 24px;\n      border-radius: 30px;\n      background: var(--bjc-cream);\n      color: var(--bjc-green);\n      box-shadow: 0 24px 70px rgba(0,0,0,0.16);\n      overflow: hidden;\n    }\n\n    .bjc-lab-hero-note::before {\n      content: \"\";\n      position: absolute;\n      width: 140px;\n      height: 140px;\n      right: -42px;\n      top: -44px;\n      border-radius: 999px;\n      background: var(--bjc-lime);\n    }\n\n    .bjc-lab-note-inner {\n      position: relative;\n      z-index: 1;\n    }\n\n    .bjc-lab-note-label {\n      display: inline-flex;\n      padding: 8px 11px;\n      border-radius: 999px;\n      background: var(--bjc-green);\n      color: var(--bjc-lime);\n      font-size: 11px;\n      font-weight: 900;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      margin-bottom: 78px;\n    }\n\n    .bjc-lab-hero-note h2 {\n      margin: 0 0 12px;\n      color: var(--bjc-green);\n      font-size: clamp(28px, 4vw, 44px);\n      line-height: 0.94;\n      letter-spacing: -0.06em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-hero-note p {\n      margin: 0;\n      color: rgba(29,76,35,0.74);\n      line-height: 1.55;\n      font-size: 15px;\n    }\n\n    .bjc-lab-nav {\n      position: sticky;\n      top: 14px;\n      z-index: 40;\n      margin-top: -24px;\n      padding-bottom: 26px;\n    }\n\n    .bjc-lab-nav-inner {\n      display: flex;\n      justify-content: center;\n      gap: 8px;\n      width: fit-content;\n      max-width: 100%;\n      margin: 0 auto;\n      padding: 8px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.82);\n      border: 1px solid rgba(29,76,35,0.12);\n      box-shadow: 0 14px 40px rgba(29,76,35,0.10);\n      backdrop-filter: blur(16px);\n      -webkit-backdrop-filter: blur(16px);\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n\n    .bjc-lab-nav-inner::-webkit-scrollbar {\n      display: none;\n    }\n\n    .bjc-lab-nav a {\n      flex: 0 0 auto;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 38px;\n      padding: 10px 14px;\n      border-radius: 999px;\n      color: var(--bjc-green) !important;\n      text-decoration: none !important;\n      font-size: 13px;\n      font-weight: 900;\n      white-space: nowrap;\n    }\n\n    .bjc-lab-nav a:hover {\n      background: var(--bjc-cream);\n    }\n\n    .bjc-lab-section {\n      padding: clamp(70px, 9vw, 118px) 0;\n    }\n\n    .bjc-lab-section-soft {\n      background: linear-gradient(180deg, var(--bjc-cream), #fffaf0);\n    }\n\n    .bjc-lab-section-white {\n      background: #fffaf0;\n    }\n\n    .bjc-lab-section-dark {\n      background: var(--bjc-green);\n      color: var(--bjc-white);\n      position: relative;\n      overflow: hidden;\n    }\n\n    .bjc-lab-section-dark::before {\n      content: \"\";\n      position: absolute;\n      width: 680px;\n      height: 680px;\n      right: -260px;\n      top: -280px;\n      border-radius: 999px;\n      background: rgba(229,255,0,0.15);\n      pointer-events: none;\n    }\n\n    .bjc-lab-head {\n      display: grid;\n      grid-template-columns: minmax(0, 0.82fr) minmax(280px, 0.48fr);\n      gap: clamp(26px, 5vw, 68px);\n      align-items: end;\n      margin-bottom: 34px;\n    }\n\n    .bjc-lab-eyebrow {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      color: var(--bjc-green);\n      font-size: 12px;\n      font-weight: 900;\n      letter-spacing: 0.1em;\n      text-transform: uppercase;\n      margin-bottom: 14px;\n    }\n\n    .bjc-lab-eyebrow::before {\n      content: \"\";\n      width: 8px;\n      height: 8px;\n      border-radius: 999px;\n      background: var(--bjc-lime);\n      box-shadow: 0 0 0 4px rgba(229,255,0,0.28);\n      flex: 0 0 auto;\n    }\n\n    .bjc-lab-section-dark .bjc-lab-eyebrow,\n    .bjc-lab-section-dark .bjc-lab-title {\n      color: var(--bjc-white);\n    }\n\n    .bjc-lab-title {\n      margin: 0;\n      color: var(--bjc-green);\n      font-size: clamp(34px, 5.6vw, 72px);\n      line-height: 0.94;\n      letter-spacing: -0.07em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-description {\n      margin: 0;\n      color: var(--bjc-muted);\n      font-size: 17px;\n      line-height: 1.62;\n    }\n\n    .bjc-lab-section-dark .bjc-lab-description {\n      color: rgba(255,255,255,0.72);\n    }\n\n    .bjc-lab-path {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 16px;\n    }\n\n    .bjc-lab-path-card {\n      position: relative;\n      min-height: 270px;\n      padding: 26px;\n      border-radius: 30px;\n      background: rgba(255,255,255,0.72);\n      border: 1px solid var(--bjc-border);\n      box-shadow: 0 18px 50px rgba(29,76,35,0.06);\n      overflow: hidden;\n    }\n\n    .bjc-lab-path-card::after {\n      content: \"\";\n      position: absolute;\n      right: -54px;\n      bottom: -64px;\n      width: 168px;\n      height: 168px;\n      border-radius: 999px;\n      background: rgba(229,255,0,0.46);\n    }\n\n    .bjc-lab-path-number {\n      position: relative;\n      z-index: 1;\n      width: 42px;\n      height: 42px;\n      display: grid;\n      place-items: center;\n      border-radius: 999px;\n      background: var(--bjc-green);\n      color: var(--bjc-lime);\n      font-weight: 900;\n      margin-bottom: 54px;\n    }\n\n    .bjc-lab-path-card h3 {\n      position: relative;\n      z-index: 1;\n      margin: 0 0 10px;\n      color: var(--bjc-green);\n      font-size: 25px;\n      line-height: 1;\n      letter-spacing: -0.05em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-path-card p {\n      position: relative;\n      z-index: 1;\n      margin: 0;\n      color: rgba(29,76,35,0.72);\n      line-height: 1.55;\n    }\n\n    .bjc-lab-tool-card {\n      position: relative;\n      z-index: 1;\n      background: #fffaf0;\n      border: 1px solid var(--bjc-border);\n      border-radius: 36px;\n      box-shadow: var(--bjc-shadow);\n      overflow: hidden;\n    }\n\n    .bjc-lab-section-dark .bjc-lab-tool-card {\n      background: rgba(255,255,255,0.07);\n      border-color: rgba(255,255,255,0.15);\n      box-shadow: none;\n    }\n\n    .bjc-lab-tool-top {\n      display: grid;\n      grid-template-columns: minmax(0, 1fr) auto;\n      gap: 24px;\n      align-items: start;\n      padding: clamp(24px, 4vw, 42px) clamp(20px, 4vw, 46px) 0;\n    }\n\n    .bjc-lab-tool-index {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      width: 48px;\n      height: 48px;\n      border-radius: 999px;\n      background: var(--bjc-lime);\n      color: var(--bjc-green);\n      font-weight: 900;\n      font-size: 15px;\n    }\n\n    .bjc-lab-tool-title {\n      margin: 0;\n      color: var(--bjc-green);\n      font-size: clamp(30px, 4.8vw, 58px);\n      line-height: 0.96;\n      letter-spacing: -0.06em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-section-dark .bjc-lab-tool-title {\n      color: var(--bjc-white);\n    }\n\n    .bjc-lab-tool-text {\n      max-width: 720px;\n      margin: 14px 0 0;\n      color: rgba(29,76,35,0.72);\n      line-height: 1.6;\n      font-size: 16px;\n    }\n\n    .bjc-lab-section-dark .bjc-lab-tool-text {\n      color: rgba(255,255,255,0.72);\n    }\n\n    .bjc-lab-tool-slot {\n      padding: clamp(18px, 4vw, 46px);\n    }\n\n    .bjc-lab-tool-slot > * {\n      max-width: 100% !important;\n    }\n\n    .bjc-lab-tool-slot > .bjc-quiz-block,\n    .bjc-lab-tool-slot .bjc-quiz-block {\n      width: 100% !important;\n      max-width: 100% !important;\n      margin: 0 auto !important;\n      padding: 0 !important;\n    }\n\n    .bjc-lab-tool-slot > .bjc-quiz-block .bjc-quiz-inner,\n    .bjc-lab-tool-slot .bjc-quiz-inner {\n      box-shadow: none !important;\n    }\n\n    .bjc-lab-principles {\n      display: grid;\n      grid-template-columns: 0.92fr 1.08fr;\n      gap: clamp(24px, 5vw, 70px);\n      align-items: start;\n    }\n\n    .bjc-lab-principles-note {\n      position: sticky;\n      top: 100px;\n      padding: 30px;\n      border-radius: 32px;\n      background: var(--bjc-green);\n      color: var(--bjc-white);\n      overflow: hidden;\n    }\n\n    .bjc-lab-principles-note::after {\n      content: \"\";\n      position: absolute;\n      width: 190px;\n      height: 190px;\n      right: -62px;\n      bottom: -70px;\n      border-radius: 999px;\n      background: var(--bjc-lime);\n    }\n\n    .bjc-lab-principles-note h2 {\n      position: relative;\n      z-index: 1;\n      margin: 0 0 14px;\n      color: var(--bjc-white);\n      font-size: clamp(32px, 5vw, 56px);\n      line-height: 0.95;\n      letter-spacing: -0.06em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-principles-note p {\n      position: relative;\n      z-index: 1;\n      margin: 0;\n      color: rgba(255,255,255,0.72);\n      line-height: 1.6;\n    }\n\n    .bjc-lab-principles-grid {\n      display: grid;\n      gap: 14px;\n    }\n\n    .bjc-lab-principle {\n      display: grid;\n      grid-template-columns: 54px minmax(0, 1fr);\n      gap: 18px;\n      align-items: start;\n      padding: 22px;\n      border-radius: 26px;\n      background: rgba(255,255,255,0.66);\n      border: 1px solid var(--bjc-border);\n    }\n\n    .bjc-lab-principle-icon {\n      width: 54px;\n      height: 54px;\n      display: grid;\n      place-items: center;\n      border-radius: 999px;\n      background: var(--bjc-lime);\n      color: var(--bjc-green);\n      font-weight: 900;\n      font-size: 13px;\n    }\n\n    .bjc-lab-principle h3 {\n      margin: 0 0 8px;\n      color: var(--bjc-green);\n      font-size: 22px;\n      line-height: 1;\n      letter-spacing: -0.04em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-principle p {\n      margin: 0;\n      color: rgba(29,76,35,0.72);\n      line-height: 1.55;\n    }\n\n    .bjc-lab-troubleshoot {\n      display: grid;\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n      gap: 14px;\n      position: relative;\n      z-index: 1;\n    }\n\n    .bjc-lab-fix-card {\n      padding: 24px;\n      border-radius: 26px;\n      background: rgba(255,255,255,0.08);\n      border: 1px solid rgba(255,255,255,0.14);\n      color: var(--bjc-white);\n    }\n\n    .bjc-lab-fix-card h3 {\n      margin: 0 0 12px;\n      color: var(--bjc-lime);\n      font-size: 22px;\n      line-height: 1;\n      letter-spacing: -0.04em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-fix-card p {\n      margin: 0;\n      color: rgba(255,255,255,0.72);\n      line-height: 1.55;\n      font-size: 15px;\n    }\n\n    .bjc-lab-cta {\n      padding: clamp(28px, 5vw, 50px);\n      border-radius: 36px;\n      background: var(--bjc-lime);\n      color: var(--bjc-green);\n      display: grid;\n      grid-template-columns: minmax(0, 1fr) auto;\n      gap: 24px;\n      align-items: center;\n    }\n\n    .bjc-lab-cta h2 {\n      margin: 0 0 10px;\n      color: var(--bjc-green);\n      font-size: clamp(32px, 5vw, 64px);\n      line-height: 0.94;\n      letter-spacing: -0.07em;\n      font-weight: 900;\n    }\n\n    .bjc-lab-cta p {\n      margin: 0;\n      max-width: 740px;\n      color: rgba(29,76,35,0.74);\n      line-height: 1.6;\n    }\n\n    .bjc-lab-cta .bjc-lab-btn {\n      background: var(--bjc-green);\n      color: var(--bjc-white) !important;\n    }\n\n    @supports (-webkit-touch-callout: none) {\n      .bjc-coffee-lab-html {\n        -webkit-text-size-adjust: 100%;\n        text-size-adjust: 100%;\n      }\n\n      .bjc-lab-hero::before {\n        mask-image: none;\n        -webkit-mask-image: none;\n        opacity: 0.08;\n      }\n\n      .bjc-lab-section-dark::before {\n        display: none;\n      }\n    }\n\n    @media (max-width: 980px) {\n      .bjc-lab-hero-grid,\n      .bjc-lab-head,\n      .bjc-lab-principles,\n      .bjc-lab-cta {\n        grid-template-columns: 1fr;\n      }\n\n      .bjc-lab-path,\n      .bjc-lab-troubleshoot {\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n      }\n\n      .bjc-lab-principles-note {\n        position: relative;\n        top: auto;\n      }\n    }\n\n    @media (max-width: 820px) {\n      .bjc-lab-wrap {\n        width: min(100% - 24px, 1180px);\n      }\n\n      .bjc-lab-hero {\n        padding: 56px 0 46px;\n      }\n\n      .bjc-lab-hero-grid {\n        display: block;\n      }\n\n      .bjc-lab-kicker {\n        margin-bottom: 18px;\n        font-size: 10px;\n        padding: 8px 11px;\n      }\n\n      .bjc-lab-hero h1 {\n        font-size: clamp(42px, 14vw, 64px);\n        line-height: 0.92;\n        letter-spacing: -0.07em;\n      }\n\n      .bjc-lab-hero-copy {\n        margin-top: 22px;\n        font-size: 17px;\n        line-height: 1.48;\n      }\n\n      .bjc-lab-hero-actions {\n        display: grid;\n        grid-template-columns: 1fr;\n        gap: 10px;\n        margin-top: 26px;\n      }\n\n      .bjc-lab-btn {\n        width: 100%;\n        min-height: 48px;\n        font-size: 15px;\n      }\n\n      .bjc-lab-hero-note {\n        display: none;\n      }\n\n      .bjc-lab-nav {\n        position: relative;\n        top: auto;\n        z-index: 2;\n        margin-top: 0;\n        padding: 12px 0 0;\n        background: var(--bjc-cream);\n      }\n\n      .bjc-lab-nav-inner {\n        width: min(100% - 24px, 1180px);\n        justify-content: flex-start;\n        border-radius: 20px;\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n\n      .bjc-lab-nav a {\n        min-height: 36px;\n        padding: 9px 12px;\n        font-size: 12px;\n      }\n\n      .bjc-lab-section {\n        padding: 58px 0;\n      }\n\n      .bjc-lab-head {\n        display: block;\n        margin-bottom: 24px;\n      }\n\n      .bjc-lab-title {\n        font-size: clamp(34px, 11vw, 52px);\n        line-height: 0.96;\n        letter-spacing: -0.065em;\n      }\n\n      .bjc-lab-description {\n        margin-top: 16px;\n        font-size: 16px;\n        line-height: 1.55;\n      }\n\n      .bjc-lab-path,\n      .bjc-lab-troubleshoot,\n      .bjc-lab-principles,\n      .bjc-lab-cta {\n        display: grid;\n        grid-template-columns: 1fr;\n        gap: 14px;\n      }\n\n      .bjc-lab-path-card {\n        min-height: auto;\n        padding: 22px;\n        border-radius: 24px;\n      }\n\n      .bjc-lab-path-number {\n        margin-bottom: 36px;\n      }\n\n      .bjc-lab-tool-card {\n        border-radius: 26px;\n      }\n\n      .bjc-lab-tool-top {\n        display: grid;\n        grid-template-columns: 1fr;\n        gap: 16px;\n        padding: 24px 18px 0;\n      }\n\n      .bjc-lab-tool-index {\n        width: 42px;\n        height: 42px;\n        font-size: 13px;\n        order: -1;\n      }\n\n      .bjc-lab-tool-title {\n        font-size: clamp(32px, 10vw, 46px);\n        line-height: 0.98;\n        letter-spacing: -0.06em;\n      }\n\n      .bjc-lab-tool-text {\n        font-size: 15px;\n        line-height: 1.55;\n      }\n\n      .bjc-lab-tool-slot {\n        padding: 14px;\n      }\n\n      .bjc-lab-tool-slot > * {\n        max-width: 100% !important;\n      }\n\n      .bjc-lab-tool-slot .bjc-quiz-block {\n        width: 100% !important;\n        max-width: 100% !important;\n        margin: 0 !important;\n        padding: 0 !important;\n      }\n\n      .bjc-lab-tool-slot .bjc-quiz-inner {\n        border-radius: 22px !important;\n      }\n\n      .bjc-lab-principles-note {\n        position: relative;\n        top: auto;\n        padding: 24px;\n        border-radius: 26px;\n      }\n\n      .bjc-lab-principles-note h2 {\n        font-size: clamp(32px, 10vw, 46px);\n      }\n\n      .bjc-lab-principle {\n        display: grid;\n        grid-template-columns: 1fr;\n        padding: 20px;\n        border-radius: 22px;\n      }\n\n      .bjc-lab-fix-card {\n        padding: 22px;\n        border-radius: 22px;\n      }\n\n      .bjc-lab-cta {\n        padding: 26px 20px;\n        border-radius: 26px;\n      }\n\n      .bjc-lab-cta h2 {\n        font-size: clamp(34px, 11vw, 52px);\n      }\n    }\n\n    @media (max-width: 430px) {\n      .bjc-lab-wrap {\n        width: min(100% - 20px, 1180px);\n      }\n\n      .bjc-lab-hero {\n        padding: 48px 0 40px;\n      }\n\n      .bjc-lab-hero h1 {\n        font-size: clamp(38px, 13.4vw, 56px);\n        line-height: 0.94;\n      }\n\n      .bjc-lab-hero-copy {\n        font-size: 16px;\n      }\n\n      .bjc-lab-section {\n        padding: 48px 0;\n      }\n\n      .bjc-lab-title,\n      .bjc-lab-tool-title {\n        font-size: clamp(31px, 10.4vw, 44px);\n      }\n\n      .bjc-lab-path-card h3,\n      .bjc-lab-principle h3,\n      .bjc-lab-fix-card h3 {\n        font-size: 21px;\n      }\n\n      .bjc-lab-tool-slot {\n        padding: 10px;\n      }\n\n      .bjc-lab-tool-slot .bjc-quiz-block {\n        margin: 0 !important;\n      }\n\n      .bjc-lab-tool-slot .bjc-quiz-intro,\n      .bjc-lab-tool-slot .bjc-quiz-panel,\n      .bjc-lab-tool-slot .bjc-quiz-results {\n        padding-left: 14px !important;\n        padding-right: 14px !important;\n      }\n\n      .bjc-lab-tool-slot .bjc-quiz-intro h2,\n      .bjc-lab-tool-slot .bjc-quiz-results-head h2 {\n        font-size: clamp(30px, 11vw, 42px) !important;\n        line-height: 0.98 !important;\n      }\n\n      .bjc-lab-tool-slot .bjc-quiz-question h3 {\n        font-size: clamp(28px, 10vw, 38px) !important;\n        line-height: 1 !important;\n      }\n\n      .bjc-lab-tool-slot .bjc-quiz-option {\n        border-radius: 18px !important;\n      }\n    }\n\n    @media (max-width: 375px) {\n      .bjc-lab-hero h1 {\n        font-size: 42px;\n      }\n\n      .bjc-lab-title,\n      .bjc-lab-tool-title {\n        font-size: 34px;\n      }\n\n      .bjc-lab-nav-inner {\n        width: min(100% - 18px, 1180px);\n      }\n    }\n\n    @media (hover: none) and (pointer: coarse) {\n      .bjc-lab-btn:hover {\n        transform: none;\n      }\n\n      .bjc-lab-btn:active {\n        transform: scale(0.985);\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      .bjc-coffee-lab-html *,\n      .bjc-coffee-lab-html *::before,\n      .bjc-coffee-lab-html *::after {\n        transition-duration: 0.001ms !important;\n        animation-duration: 0.001ms !important;\n        animation-iteration-count: 1 !important;\n        scroll-behavior: auto !important;\n      }\n    }\n  <\/style>\n\n  <header class=\"bjc-lab-hero\">\n    <div class=\"bjc-lab-wrap bjc-lab-hero-grid\">\n      <div>\n        <div class=\"bjc-lab-kicker\">Bean Jamming Coffee Lab<\/div>\n\n        <h1>\n          Choose better.<br>\n          Brew clearer.<br>\n          <span>Enjoy more.<\/span>\n        <\/h1>\n\n        <p class=\"bjc-lab-hero-copy\">\n          A practical space for curious home brewers. Find a Colombian coffee that fits your taste,\n          then learn how grind size, water temperature and brewing method change the cup.\n        <\/p>\n\n        <div class=\"bjc-lab-hero-actions\">\n          <a href=\"#bjc-lab-quiz\" class=\"bjc-lab-btn bjc-lab-btn-primary\">Start with the quiz<\/a>\n          <a href=\"#bjc-lab-brew\" class=\"bjc-lab-btn bjc-lab-btn-secondary\">Find your brew balance<\/a>\n        <\/div>\n      <\/div>\n\n      <aside class=\"bjc-lab-hero-note\" aria-label=\"Coffee Lab note\">\n        <div class=\"bjc-lab-note-inner\">\n          <span class=\"bjc-lab-note-label\">Lab note<\/span>\n          <h2>One cup, one adjustment.<\/h2>\n          <p>\n            Good brewing is not about changing everything at once. Taste, adjust one variable,\n            and brew again with intention.\n          <\/p>\n        <\/div>\n      <\/aside>\n    <\/div>\n  <\/header>\n\n  <nav class=\"bjc-lab-nav\" aria-label=\"Coffee Lab navigation\">\n    <div class=\"bjc-lab-nav-inner\">\n      <a href=\"#bjc-lab-how\">How it works<\/a>\n      <a href=\"#bjc-lab-quiz\">Coffee quiz<\/a>\n      <a href=\"#bjc-lab-brew\">Brew balance<\/a>\n      <a href=\"#bjc-lab-fix\">Fix your cup<\/a>\n    <\/div>\n  <\/nav>\n\n  <section id=\"bjc-lab-how\" class=\"bjc-lab-section bjc-lab-section-soft\">\n    <div class=\"bjc-lab-wrap\">\n      <div class=\"bjc-lab-head\">\n        <div>\n          <span class=\"bjc-lab-eyebrow\">Simple, useful, human<\/span>\n          <h2 class=\"bjc-lab-title\">A coffee page that helps, not lectures.<\/h2>\n        <\/div>\n\n        <p class=\"bjc-lab-description\">\n          The Coffee Lab connects taste, product choice and brewing decisions in one place.\n          It is designed to be practical for daily coffee, not complicated for the sake of it.\n        <\/p>\n      <\/div>\n\n      <div class=\"bjc-lab-path\">\n        <article class=\"bjc-lab-path-card\">\n          <div class=\"bjc-lab-path-number\">1<\/div>\n          <h3>Find your coffee<\/h3>\n          <p>\n            Answer a few simple questions. The quiz reads the products from your WooCommerce shop,\n            so new coffees can be recommended without updating this page.\n          <\/p>\n        <\/article>\n\n        <article class=\"bjc-lab-path-card\">\n          <div class=\"bjc-lab-path-number\">2<\/div>\n          <h3>Adjust your brew<\/h3>\n          <p>\n            Use the brew balance tool to understand how grind, temperature and method influence\n            sweetness, acidity, body and clarity.\n          <\/p>\n        <\/article>\n\n        <article class=\"bjc-lab-path-card\">\n          <div class=\"bjc-lab-path-number\">3<\/div>\n          <h3>Taste and repeat<\/h3>\n          <p>\n            Brew with a starting point, taste honestly, and change one variable at a time.\n            Small adjustments create better coffee habits.\n          <\/p>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section id=\"bjc-lab-quiz\" class=\"bjc-lab-section bjc-lab-section-white\">\n    <div class=\"bjc-lab-wrap\">\n      <article class=\"bjc-lab-tool-card\">\n        <div class=\"bjc-lab-tool-top\">\n          <div>\n            <span class=\"bjc-lab-eyebrow\">Tool 01<\/span>\n            <h2 class=\"bjc-lab-tool-title\">Find your Colombian coffee.<\/h2>\n            <p class=\"bjc-lab-tool-text\">\n              Start here if you are not sure which coffee to choose. The quiz uses information\n              from your shop products: title, description, attributes, categories, tags, price,\n              image and stock status.\n            <\/p>\n          <\/div>\n\n          <div class=\"bjc-lab-tool-index\">01<\/div>\n        <\/div>\n\n        <div class=\"bjc-lab-tool-slot\">\n          \n        <style id=\"bjc-quiz-v2-style\">\n            .bjc-quiz-block {\n                --bjc-green: #1D4C23;\n                --bjc-lime: #E5FF00;\n                --bjc-cream: #F3E8CD;\n                --bjc-white: #FFFFFF;\n                --bjc-border: rgba(29, 76, 35, 0.22);\n                --bjc-muted: rgba(29, 76, 35, 0.76);\n\n                width: min(1120px, calc(100% - 32px));\n                margin: 48px auto;\n                padding: 32px;\n                border-radius: 8px;\n                background: var(--bjc-cream);\n                color: var(--bjc-green);\n                font-family: \"DM Sans\", Arial, Helvetica, sans-serif;\n                letter-spacing: 0;\n                overflow: hidden;\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n                -webkit-tap-highlight-color: rgba(229, 255, 0, 0.28);\n            }\n\n            .bjc-quiz-block,\n            .bjc-quiz-block * {\n                box-sizing: border-box;\n            }\n\n            .bjc-quiz-block [hidden] {\n                display: none !important;\n            }\n\n            .bjc-quiz-inner {\n                min-height: 520px;\n            }\n\n            .bjc-quiz-intro,\n            .bjc-quiz-panel,\n            .bjc-quiz-results {\n                scroll-margin-top: 88px;\n            }\n\n            .bjc-quiz-intro {\n                display: flex;\n                min-height: 520px;\n                flex-direction: column;\n                align-items: flex-start;\n                justify-content: center;\n            }\n\n            .bjc-quiz-eyebrow,\n            .bjc-question-eyebrow,\n            .bjc-result-label {\n                display: inline-flex;\n                width: fit-content;\n                align-items: center;\n                gap: 8px;\n                border-radius: 999px;\n                background: var(--bjc-green);\n                color: var(--bjc-white);\n                font-size: 13px;\n                font-weight: 700;\n                line-height: 1;\n                text-transform: uppercase;\n            }\n\n            .bjc-quiz-eyebrow,\n            .bjc-result-label {\n                padding: 8px 12px;\n            }\n\n            .bjc-question-eyebrow {\n                margin-bottom: 12px;\n                padding: 0;\n                background: transparent;\n                color: var(--bjc-green);\n            }\n\n            .bjc-quiz-eyebrow::before {\n                content: \"\";\n                width: 8px;\n                height: 8px;\n                border-radius: 999px;\n                background: var(--bjc-lime);\n                flex: 0 0 auto;\n            }\n\n            .bjc-quiz-intro h2,\n            .bjc-quiz-results-head h2 {\n                max-width: 760px;\n                margin: 18px 0 14px;\n                color: var(--bjc-green);\n                font-size: 56px;\n                font-weight: 700;\n                letter-spacing: 0;\n                line-height: 1.04;\n            }\n\n            .bjc-quiz-intro p,\n            .bjc-quiz-results-head p,\n            .bjc-quiz-question > p,\n            .bjc-result-tagline,\n            .bjc-result-why,\n            .bjc-quiz-alt-card p {\n                color: var(--bjc-muted);\n                font-size: 16px;\n                line-height: 1.55;\n            }\n\n            .bjc-quiz-intro p,\n            .bjc-quiz-results-head p {\n                max-width: 660px;\n                margin: 0;\n            }\n\n            .bjc-quiz-start,\n            .bjc-quiz-retake,\n            .bjc-quiz-shop-all,\n            .bjc-quiz-result-button,\n            .bjc-quiz-back,\n            .bjc-quiz-reset {\n                display: inline-flex;\n                min-height: 46px;\n                align-items: center;\n                justify-content: center;\n                border-radius: 999px;\n                border: 1px solid transparent;\n                padding: 0 22px;\n                font: inherit;\n                font-size: 15px;\n                font-weight: 700;\n                line-height: 1;\n                text-align: center;\n                text-decoration: none !important;\n                cursor: pointer;\n                touch-action: manipulation;\n                -webkit-touch-callout: none;\n                -webkit-user-select: none;\n                user-select: none;\n                transition: transform 140ms ease, background-color 140ms ease, border-color 140ms ease, color 140ms ease;\n            }\n\n            .bjc-quiz-start,\n            .bjc-quiz-shop-all,\n            .bjc-quiz-result-button {\n                background: var(--bjc-lime);\n                color: var(--bjc-green) !important;\n            }\n\n            .bjc-quiz-retake {\n                background: var(--bjc-green);\n                color: var(--bjc-white) !important;\n            }\n\n            .bjc-quiz-back,\n            .bjc-quiz-reset {\n                border-color: var(--bjc-border);\n                background: var(--bjc-white);\n                color: var(--bjc-green) !important;\n            }\n\n            .bjc-quiz-start {\n                margin-top: 28px;\n            }\n\n            .bjc-quiz-progress {\n                display: grid;\n                grid-template-columns: auto 1fr;\n                gap: 18px;\n                align-items: center;\n                margin-bottom: 28px;\n            }\n\n            .bjc-quiz-step-text {\n                color: var(--bjc-green);\n                font-size: 13px;\n                font-weight: 700;\n                line-height: 1;\n                text-transform: uppercase;\n                white-space: nowrap;\n            }\n\n            .bjc-quiz-progress-track {\n                height: 10px;\n                overflow: hidden;\n                border-radius: 999px;\n                background: rgba(29, 76, 35, 0.14);\n            }\n\n            .bjc-quiz-progress-fill {\n                width: 0%;\n                height: 100%;\n                border-radius: inherit;\n                background: var(--bjc-green);\n                transition: width 220ms ease;\n            }\n\n            .bjc-quiz-question h3 {\n                max-width: 760px;\n                margin: 0 0 10px;\n                color: var(--bjc-green);\n                font-size: 42px;\n                font-weight: 700;\n                letter-spacing: 0;\n                line-height: 1.08;\n            }\n\n            .bjc-quiz-question > p {\n                max-width: 620px;\n                margin: 0 0 24px;\n            }\n\n            .bjc-quiz-options {\n                display: grid;\n                grid-template-columns: repeat(2, minmax(0, 1fr));\n                gap: 14px;\n            }\n\n            .bjc-quiz-option {\n                position: relative;\n                display: block;\n                width: 100%;\n                min-height: 142px;\n                border: 1px solid var(--bjc-border);\n                border-radius: 8px;\n                padding: 22px;\n                background: var(--bjc-white);\n                color: var(--bjc-green);\n                font: inherit;\n                text-align: left;\n                cursor: pointer;\n                touch-action: manipulation;\n                -webkit-user-select: none;\n                user-select: none;\n                transition: transform 140ms ease, border-color 140ms ease, background-color 140ms ease;\n            }\n\n            .bjc-quiz-option strong {\n                display: block;\n                margin: 0 42px 8px 0;\n                color: var(--bjc-green);\n                font-size: 18px;\n                font-weight: 700;\n                line-height: 1.22;\n            }\n\n            .bjc-quiz-option span {\n                display: block;\n                max-width: 430px;\n                color: var(--bjc-muted);\n                font-size: 15px;\n                line-height: 1.48;\n            }\n\n            .bjc-quiz-option::after {\n                content: \"\";\n                position: absolute;\n                right: 18px;\n                bottom: 18px;\n                width: 30px;\n                height: 30px;\n                border-radius: 999px;\n                background: var(--bjc-lime);\n                box-shadow: inset 0 0 0 1px rgba(29, 76, 35, 0.18);\n            }\n\n            .bjc-quiz-option::before {\n                content: \"\";\n                position: absolute;\n                right: 29px;\n                bottom: 28px;\n                z-index: 1;\n                width: 8px;\n                height: 8px;\n                border-top: 2px solid var(--bjc-green);\n                border-right: 2px solid var(--bjc-green);\n                transform: rotate(45deg);\n            }\n\n            .bjc-quiz-actions,\n            .bjc-quiz-bottom-actions {\n                display: flex;\n                flex-wrap: wrap;\n                gap: 12px;\n                margin-top: 24px;\n            }\n\n            .bjc-quiz-main-result {\n                margin-top: 28px;\n            }\n\n            .bjc-quiz-result-card {\n                display: grid;\n                grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.1fr);\n                overflow: hidden;\n                border: 1px solid var(--bjc-border);\n                border-radius: 8px;\n                background: var(--bjc-white);\n            }\n\n            .bjc-quiz-result-image {\n                min-height: 340px;\n                background: var(--bjc-green);\n            }\n\n            .bjc-quiz-result-image img {\n                display: block;\n                width: 100%;\n                height: 100%;\n                object-fit: cover;\n            }\n\n            .bjc-quiz-result-image.is-empty {\n                display: grid;\n                place-items: center;\n                padding: 28px;\n                color: var(--bjc-lime);\n                font-size: 28px;\n                font-weight: 700;\n                line-height: 1.1;\n                text-align: center;\n            }\n\n            .bjc-quiz-result-content {\n                padding: 32px;\n            }\n\n            .bjc-result-label {\n                color: var(--bjc-lime);\n            }\n\n            .bjc-quiz-result-content h3 {\n                margin: 16px 0 10px;\n                color: var(--bjc-green);\n                font-size: 38px;\n                font-weight: 700;\n                letter-spacing: 0;\n                line-height: 1.08;\n            }\n\n            .bjc-result-tagline,\n            .bjc-result-why {\n                margin: 0 0 18px;\n            }\n\n            .bjc-result-meta {\n                display: grid;\n                gap: 10px;\n                margin: 20px 0;\n                border-radius: 8px;\n                background: var(--bjc-cream);\n                padding: 18px;\n                color: var(--bjc-green);\n            }\n\n            .bjc-result-meta div {\n                font-size: 15px;\n                line-height: 1.45;\n            }\n\n            .bjc-result-meta strong {\n                color: var(--bjc-green);\n            }\n\n            .bjc-sensory-bars {\n                display: grid;\n                gap: 10px;\n                margin: 20px 0;\n            }\n\n            .bjc-sensory-row {\n                display: grid;\n                grid-template-columns: 92px 1fr 36px;\n                gap: 10px;\n                align-items: center;\n                color: var(--bjc-green);\n                font-size: 13px;\n                line-height: 1.2;\n            }\n\n            .bjc-sensory-track {\n                height: 8px;\n                overflow: hidden;\n                border-radius: 999px;\n                background: rgba(29, 76, 35, 0.14);\n            }\n\n            .bjc-sensory-fill {\n                display: block;\n                width: 0%;\n                height: 100%;\n                border-radius: inherit;\n                background: var(--bjc-green);\n            }\n\n            .bjc-quiz-alt-title h3 {\n                margin: 32px 0 16px;\n                color: var(--bjc-green);\n                font-size: 28px;\n                font-weight: 700;\n                letter-spacing: 0;\n                line-height: 1.16;\n            }\n\n            .bjc-quiz-alt-results {\n                display: grid;\n                grid-template-columns: repeat(2, minmax(0, 1fr));\n                gap: 14px;\n            }\n\n            .bjc-quiz-alt-card,\n            .bjc-quiz-empty {\n                border: 1px solid var(--bjc-border);\n                border-radius: 8px;\n                background: var(--bjc-white);\n                padding: 20px;\n            }\n\n            .bjc-quiz-alt-card h4,\n            .bjc-quiz-empty h3 {\n                margin: 0 0 8px;\n                color: var(--bjc-green);\n                font-size: 20px;\n                font-weight: 700;\n                line-height: 1.18;\n            }\n\n            .bjc-quiz-alt-card p,\n            .bjc-quiz-empty p {\n                margin: 0 0 12px;\n            }\n\n            .bjc-quiz-alt-card a {\n                color: var(--bjc-green);\n                font-weight: 700;\n                text-decoration: underline;\n                text-decoration-thickness: 2px;\n                text-underline-offset: 4px;\n            }\n\n            .bjc-quiz-block button:focus-visible,\n            .bjc-quiz-block a:focus-visible {\n                outline: 3px solid var(--bjc-green);\n                outline-offset: 3px;\n            }\n\n            @media (hover: hover) and (pointer: fine) {\n                .bjc-quiz-start:hover,\n                .bjc-quiz-shop-all:hover,\n                .bjc-quiz-result-button:hover,\n                .bjc-quiz-retake:hover,\n                .bjc-quiz-back:hover,\n                .bjc-quiz-reset:hover,\n                .bjc-quiz-option:hover {\n                    transform: translateY(-1px);\n                }\n\n                .bjc-quiz-option:hover {\n                    border-color: var(--bjc-green);\n                }\n            }\n\n            @media (hover: none) and (pointer: coarse) {\n                .bjc-quiz-start:hover,\n                .bjc-quiz-shop-all:hover,\n                .bjc-quiz-result-button:hover,\n                .bjc-quiz-retake:hover,\n                .bjc-quiz-back:hover,\n                .bjc-quiz-reset:hover,\n                .bjc-quiz-option:hover {\n                    transform: none;\n                }\n\n                .bjc-quiz-start:active,\n                .bjc-quiz-shop-all:active,\n                .bjc-quiz-result-button:active,\n                .bjc-quiz-retake:active,\n                .bjc-quiz-back:active,\n                .bjc-quiz-reset:active,\n                .bjc-quiz-option:active {\n                    transform: scale(0.99);\n                }\n            }\n\n            @media (max-width: 860px) {\n                .bjc-quiz-block {\n                    width: min(100% - 24px, 760px);\n                    margin: 32px auto;\n                    padding: 24px;\n                }\n\n                .bjc-quiz-inner,\n                .bjc-quiz-intro {\n                    min-height: 0;\n                }\n\n                .bjc-quiz-intro h2,\n                .bjc-quiz-results-head h2 {\n                    font-size: 44px;\n                }\n\n                .bjc-quiz-question h3 {\n                    font-size: 34px;\n                }\n\n                .bjc-quiz-options,\n                .bjc-quiz-alt-results,\n                .bjc-quiz-result-card {\n                    grid-template-columns: 1fr;\n                }\n\n                .bjc-quiz-result-image {\n                    min-height: 0;\n                    aspect-ratio: 4 \/ 3;\n                }\n            }\n\n            @media (max-width: 560px) {\n                .bjc-quiz-block {\n                    width: calc(100% - 20px);\n                    padding: 18px;\n                }\n\n                .bjc-quiz-intro,\n                .bjc-quiz-panel,\n                .bjc-quiz-results {\n                    scroll-margin-top: 72px;\n                }\n\n                .bjc-quiz-intro h2,\n                .bjc-quiz-results-head h2 {\n                    font-size: 34px;\n                    line-height: 1.08;\n                }\n\n                .bjc-quiz-question h3,\n                .bjc-quiz-result-content h3 {\n                    font-size: 28px;\n                }\n\n                .bjc-quiz-progress {\n                    grid-template-columns: 1fr;\n                    gap: 10px;\n                }\n\n                .bjc-quiz-option {\n                    min-height: 0;\n                    padding: 18px;\n                }\n\n                .bjc-quiz-option strong {\n                    margin-right: 34px;\n                    font-size: 17px;\n                }\n\n                .bjc-quiz-actions,\n                .bjc-quiz-bottom-actions {\n                    display: grid;\n                    grid-template-columns: 1fr;\n                }\n\n                .bjc-quiz-start,\n                .bjc-quiz-retake,\n                .bjc-quiz-shop-all,\n                .bjc-quiz-result-button,\n                .bjc-quiz-back,\n                .bjc-quiz-reset {\n                    width: 100%;\n                }\n\n                .bjc-quiz-result-content {\n                    padding: 22px;\n                }\n\n                .bjc-sensory-row {\n                    grid-template-columns: 82px 1fr 32px;\n                }\n            }\n\n            @media (prefers-reduced-motion: reduce) {\n                .bjc-quiz-block *,\n                .bjc-quiz-block *::before,\n                .bjc-quiz-block *::after {\n                    animation-duration: 0.001ms !important;\n                    animation-iteration-count: 1 !important;\n                    scroll-behavior: auto !important;\n                    transition-duration: 0.001ms !important;\n                }\n            }\n        <\/style>\n\n        <script id=\"bjc-quiz-v2-script\">\n            (function () {\n                'use strict';\n\n                function ready(fn) {\n                    if (document.readyState !== 'loading') {\n                        fn();\n                    } else {\n                        document.addEventListener('DOMContentLoaded', fn);\n                    }\n                }\n\n                function escapeHtml(value) {\n                    return String(value || '').replace(\/[&<>\"']\/g, function (char) {\n                        return {\n                            '&': '&amp;',\n                            '<': '&lt;',\n                            '>': '&gt;',\n                            '\"': '&quot;',\n                            \"'\": '&#039;'\n                        }[char];\n                    });\n                }\n\n                function normalizeText(value) {\n                    var text = String(value || '').toLowerCase();\n\n                    if (typeof text.normalize === 'function') {\n                        text = text.normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '');\n                    }\n\n                    return text;\n                }\n\n                function safeUrl(value) {\n                    return String(value || '\/shop\/').replace(\/\"\/g, '%22');\n                }\n\n                function show(el) {\n                    if (el) {\n                        el.hidden = false;\n                    }\n                }\n\n                function hide(el) {\n                    if (el) {\n                        el.hidden = true;\n                    }\n                }\n\n                function preserveScroll(callback) {\n                    var x = window.pageXOffset || document.documentElement.scrollLeft || 0;\n                    var y = window.pageYOffset || document.documentElement.scrollTop || 0;\n\n                    callback();\n\n                    window.requestAnimationFrame(function () {\n                        window.scrollTo(x, y);\n                    });\n                }\n\n                function scrollToQuizTarget(element) {\n                    if (!element) {\n                        return;\n                    }\n\n                    var isMobile = window.matchMedia('(max-width: 560px)').matches;\n                    var reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n                    var offset = isMobile ? 72 : 88;\n                    var currentY = window.pageYOffset || document.documentElement.scrollTop || 0;\n                    var targetY = element.getBoundingClientRect().top + currentY - offset;\n\n                    window.scrollTo({\n                        top: Math.max(0, targetY),\n                        behavior: reducedMotion ? 'auto' : 'smooth'\n                    });\n                }\n\n                function sensoryScore(product, targets) {\n                    var score = 0;\n                    var sensory = product.sensory || {};\n\n                    Object.keys(targets || {}).forEach(function (dimension) {\n                        var config = targets[dimension] || {};\n                        var rawValue = sensory[dimension];\n                        var value;\n                        var target = Number(config.target);\n                        var weight = Number(config.weight || 0);\n\n                        if (rawValue === null || typeof rawValue === 'undefined' || rawValue === '') {\n                            return;\n                        }\n\n                        value = Number(rawValue);\n\n                        if (!isFinite(value) || !isFinite(target) || !weight) {\n                            return;\n                        }\n\n                        var diff = Math.abs(value - target);\n                        score += Math.max(0, weight - (diff * (weight \/ 4)));\n                    });\n\n                    return score;\n                }\n\n                function keywordScore(product, signals) {\n                    var score = 0;\n                    var text = normalizeText(product.search_text || '');\n\n                    Object.keys(signals || {}).forEach(function (keyword) {\n                        var needle = normalizeText(keyword);\n                        var weight = Number(signals[keyword] || 0);\n\n                        if (needle && text.indexOf(needle) !== -1) {\n                            score += weight * 0.5;\n                        }\n                    });\n\n                    return score;\n                }\n\n                function scoreProduct(product, option) {\n                    return keywordScore(product, option.signals || {}) + sensoryScore(product, option.targets || {});\n                }\n\n                function getSortedResults(scores, products) {\n                    Object.keys(products).forEach(function (key) {\n                        if (typeof scores[key] === 'undefined') {\n                            scores[key] = 0;\n                        }\n                    });\n\n                    return Object.keys(scores)\n                        .filter(function (key) {\n                            return products[key];\n                        })\n                        .sort(function (a, b) {\n                            if (scores[b] === scores[a]) {\n                                return String(products[a].name || '').localeCompare(String(products[b].name || ''));\n                            }\n\n                            return scores[b] - scores[a];\n                        });\n                }\n\n                function resultImage(product) {\n                    if (product.image) {\n                        return '<div class=\"bjc-quiz-result-image\"><img src=\"' + safeUrl(product.image) + '\" alt=\"' + escapeHtml(product.name) + '\" loading=\"lazy\" decoding=\"async\"><\/div>';\n                    }\n\n                    return '<div class=\"bjc-quiz-result-image is-empty\">' + escapeHtml(product.short_name || product.name) + '<\/div>';\n                }\n\n                function renderSensoryBars(product) {\n                    var sensory = product.sensory || {};\n                    var rows = [\n                        ['Sweetness', sensory.sweetness],\n                        ['Acidity', sensory.acidity],\n                        ['Body', sensory.body],\n                        ['Fruit', sensory.fruit]\n                    ];\n\n                    var html = rows.map(function (row) {\n                        var label = row[0];\n                        var value = Number(row[1]);\n\n                        if (!isFinite(value) || value <= 0) {\n                            return '';\n                        }\n\n                        var percent = Math.max(0, Math.min(100, value * 10));\n\n                        return '' +\n                            '<div class=\"bjc-sensory-row\">' +\n                                '<span>' + escapeHtml(label) + '<\/span>' +\n                                '<span class=\"bjc-sensory-track\"><span class=\"bjc-sensory-fill\" style=\"width:' + percent + '%\"><\/span><\/span>' +\n                                '<span>' + escapeHtml(value.toFixed(1).replace(\/\\.0$\/, '')) + '<\/span>' +\n                            '<\/div>';\n                    }).join('');\n\n                    return html ? '<div class=\"bjc-sensory-bars\">' + html + '<\/div>' : '';\n                }\n\n                function renderMainResult(product) {\n                    return '' +\n                        '<article class=\"bjc-quiz-result-card\">' +\n                            resultImage(product) +\n                            '<div class=\"bjc-quiz-result-content\">' +\n                                '<span class=\"bjc-result-label\">Best match<\/span>' +\n                                '<h3>' + escapeHtml(product.name) + '<\/h3>' +\n                                '<p class=\"bjc-result-tagline\">' + escapeHtml(product.tagline) + '<\/p>' +\n                                '<div class=\"bjc-result-meta\">' +\n                                    '<div><strong>Notes:<\/strong> ' + escapeHtml(product.notes) + '<\/div>' +\n                                    '<div><strong>Process:<\/strong> ' + escapeHtml(product.process) + '<\/div>' +\n                                    '<div><strong>Best for:<\/strong> ' + escapeHtml(product.best_for) + '<\/div>' +\n                                    (product.price ? '<div><strong>Price:<\/strong> ' + escapeHtml(product.price) + '<\/div>' : '') +\n                                '<\/div>' +\n                                renderSensoryBars(product) +\n                                '<p class=\"bjc-result-why\">' + escapeHtml(product.why) + '<\/p>' +\n                                '<a class=\"bjc-quiz-result-button\" href=\"' + safeUrl(product.url) + '\">Shop this coffee<\/a>' +\n                            '<\/div>' +\n                        '<\/article>';\n                }\n\n                function renderAltResult(product) {\n                    return '' +\n                        '<article class=\"bjc-quiz-alt-card\">' +\n                            '<h4>' + escapeHtml(product.short_name || product.name) + '<\/h4>' +\n                            '<p>' + escapeHtml(product.tagline) + '<\/p>' +\n                            '<p><strong>Notes:<\/strong> ' + escapeHtml(product.notes) + '<\/p>' +\n                            (product.price ? '<p><strong>Price:<\/strong> ' + escapeHtml(product.price) + '<\/p>' : '') +\n                            '<a href=\"' + safeUrl(product.url) + '\">View coffee<\/a>' +\n                        '<\/article>';\n                }\n\n                function initQuiz(block) {\n                    if (!block || block.dataset.bjcQuizReady === '1') {\n                        return;\n                    }\n\n                    block.dataset.bjcQuizReady = '1';\n\n                    var dataEl = block.querySelector('.bjc-quiz-data');\n\n                    if (!dataEl) {\n                        return;\n                    }\n\n                    var payload;\n\n                    try {\n                        payload = JSON.parse(dataEl.textContent || '{}');\n                    } catch (error) {\n                        console.warn('Bean Jamming Coffee Quiz: invalid quiz data.', error);\n                        return;\n                    }\n\n                    var products = payload.products || {};\n                    var questions = payload.questions || [];\n                    var alternativeCount = Math.max(1, Number(payload.alternative_count || 4));\n\n                    var intro = block.querySelector('.bjc-quiz-intro');\n                    var panel = block.querySelector('.bjc-quiz-panel');\n                    var results = block.querySelector('.bjc-quiz-results');\n                    var startBtn = block.querySelector('.bjc-quiz-start');\n                    var backBtn = block.querySelector('.bjc-quiz-back');\n                    var resetBtn = block.querySelector('.bjc-quiz-reset');\n                    var retakeBtn = block.querySelector('.bjc-quiz-retake');\n                    var questionEl = block.querySelector('.bjc-quiz-question');\n                    var stepText = block.querySelector('.bjc-quiz-step-text');\n                    var progressFill = block.querySelector('.bjc-quiz-progress-fill');\n                    var mainResult = block.querySelector('.bjc-quiz-main-result');\n                    var altResults = block.querySelector('.bjc-quiz-alt-results');\n\n                    var currentIndex = 0;\n                    var scores = {};\n                    var history = [];\n\n                    function resetQuiz() {\n                        preserveScroll(function () {\n                            currentIndex = 0;\n                            scores = {};\n                            history = [];\n                            hide(results);\n                            hide(panel);\n                            show(intro);\n                        });\n                    }\n\n                    function startQuiz() {\n                        hide(intro);\n                        hide(results);\n                        show(panel);\n\n                        currentIndex = 0;\n                        scores = {};\n                        history = [];\n\n                        renderQuestion();\n\n                        window.requestAnimationFrame(function () {\n                            scrollToQuizTarget(panel);\n                        });\n                    }\n\n                    function renderQuestion() {\n                        var question = questions[currentIndex];\n\n                        if (!question) {\n                            renderResults();\n                            return;\n                        }\n\n                        if (stepText) {\n                            stepText.textContent = 'Question ' + (currentIndex + 1) + ' of ' + questions.length;\n                        }\n\n                        if (progressFill) {\n                            progressFill.style.width = (((currentIndex) \/ questions.length) * 100) + '%';\n                        }\n\n                        var html = '' +\n                            '<span class=\"bjc-question-eyebrow\">' + escapeHtml(question.eyebrow) + '<\/span>' +\n                            '<h3>' + escapeHtml(question.title) + '<\/h3>' +\n                            '<p>' + escapeHtml(question.subtitle) + '<\/p>' +\n                            '<div class=\"bjc-quiz-options\">';\n\n                        question.options.forEach(function (option, index) {\n                            html += '' +\n                                '<button type=\"button\" class=\"bjc-quiz-option\" data-option-index=\"' + index + '\">' +\n                                    '<strong>' + escapeHtml(option.label) + '<\/strong>' +\n                                    '<span>' + escapeHtml(option.description) + '<\/span>' +\n                                '<\/button>';\n                        });\n\n                        html += '<\/div>';\n\n                        if (questionEl) {\n                            questionEl.innerHTML = html;\n                        }\n\n                        block.querySelectorAll('.bjc-quiz-option').forEach(function (button) {\n                            button.addEventListener('click', function () {\n                                var optionIndex = parseInt(button.getAttribute('data-option-index'), 10);\n                                var selected = question.options[optionIndex];\n\n                                if (!selected) {\n                                    return;\n                                }\n\n                                var answerScores = {};\n\n                                Object.keys(products).forEach(function (key) {\n                                    answerScores[key] = scoreProduct(products[key], selected);\n                                    scores[key] = (scores[key] || 0) + answerScores[key];\n                                });\n\n                                history.push({\n                                    questionIndex: currentIndex,\n                                    scores: answerScores\n                                });\n\n                                currentIndex++;\n\n                                if (currentIndex >= questions.length) {\n                                    renderResults();\n                                } else {\n                                    preserveScroll(function () {\n                                        renderQuestion();\n                                    });\n                                }\n                            });\n                        });\n\n                        if (backBtn) {\n                            backBtn.style.display = currentIndex === 0 ? 'none' : 'inline-flex';\n                        }\n                    }\n\n                    function goBack() {\n                        if (!history.length) {\n                            return;\n                        }\n\n                        preserveScroll(function () {\n                            var last = history.pop();\n\n                            Object.keys(last.scores || {}).forEach(function (key) {\n                                scores[key] = (scores[key] || 0) - last.scores[key];\n                            });\n\n                            currentIndex = last.questionIndex;\n                            renderQuestion();\n                        });\n                    }\n\n                    function renderResults() {\n                        var sorted = getSortedResults(scores, products);\n                        var bestKey = sorted[0];\n                        var altKeys = sorted.slice(1, 1 + alternativeCount);\n\n                        if (!bestKey || !products[bestKey]) {\n                            return;\n                        }\n\n                        if (progressFill) {\n                            progressFill.style.width = '100%';\n                        }\n\n                        hide(panel);\n                        hide(intro);\n                        show(results);\n\n                        if (mainResult) {\n                            mainResult.innerHTML = renderMainResult(products[bestKey]);\n                        }\n\n                        if (altResults) {\n                            altResults.innerHTML = altKeys.map(function (key) {\n                                return renderAltResult(products[key]);\n                            }).join('');\n                        }\n\n                        window.setTimeout(function () {\n                            scrollToQuizTarget(results);\n                        }, 80);\n                    }\n\n                    if (startBtn) {\n                        startBtn.addEventListener('click', startQuiz);\n                    }\n\n                    if (backBtn) {\n                        backBtn.addEventListener('click', goBack);\n                    }\n\n                    if (resetBtn) {\n                        resetBtn.addEventListener('click', resetQuiz);\n                    }\n\n                    if (retakeBtn) {\n                        retakeBtn.addEventListener('click', startQuiz);\n                    }\n                }\n\n                ready(function () {\n                    document.querySelectorAll('.bjc-quiz-block').forEach(initQuiz);\n                });\n            })();\n        <\/script>\n\n        \n        <section id=\"bjc-coffee-quiz-7767\" class=\"bjc-quiz-block\" aria-label=\"Find your Colombian coffee quiz\">\n            <div class=\"bjc-quiz-inner\">\n                <div class=\"bjc-quiz-intro\">\n                    <span class=\"bjc-quiz-eyebrow\">Find your Colombian coffee<\/span>\n\n                    <h2>Not sure which coffee to choose?<\/h2>\n\n                    <p>\n                        Answer a few simple questions and we will suggest a Colombian coffee\n                        using the sensory information available in the shop.\n                    <\/p>\n\n                    <button type=\"button\" class=\"bjc-quiz-start\">\n                        Start the quiz\n                    <\/button>\n                <\/div>\n\n                <div class=\"bjc-quiz-panel\" hidden>\n                    <div class=\"bjc-quiz-progress\">\n                        <div>\n                            <span class=\"bjc-quiz-step-text\">Question 1 of 4<\/span>\n                        <\/div>\n\n                        <div class=\"bjc-quiz-progress-track\">\n                            <div class=\"bjc-quiz-progress-fill\"><\/div>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"bjc-quiz-question\"><\/div>\n\n                    <div class=\"bjc-quiz-actions\">\n                        <button type=\"button\" class=\"bjc-quiz-back\">\n                            Back\n                        <\/button>\n\n                        <button type=\"button\" class=\"bjc-quiz-reset\">\n                            Restart\n                        <\/button>\n                    <\/div>\n                <\/div>\n\n                <div class=\"bjc-quiz-results\" hidden>\n                    <div class=\"bjc-quiz-results-head\">\n                        <span class=\"bjc-quiz-eyebrow\">Your match<\/span>\n\n                        <h2>Your Colombian coffee recommendation<\/h2>\n\n                        <p>\n                            Based on your answers, this coffee should be a good starting point.\n                            You can also compare it with the other available coffees.\n                        <\/p>\n                    <\/div>\n\n                    <div class=\"bjc-quiz-main-result\"><\/div>\n\n                    <div class=\"bjc-quiz-alt-title\">\n                        <h3>Other coffees you might enjoy<\/h3>\n                    <\/div>\n\n                    <div class=\"bjc-quiz-alt-results\"><\/div>\n\n                    <div class=\"bjc-quiz-bottom-actions\">\n                        <button type=\"button\" class=\"bjc-quiz-retake\">\n                            Retake quiz\n                        <\/button>\n\n                        <a class=\"bjc-quiz-shop-all\" href=\"https:\/\/beanjammingcoffee.com\/de\/shop\/\">\n                            View all coffees\n                        <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <script type=\"application\/json\" class=\"bjc-quiz-data\">\n                {\"products\":{\"product_3088\":{\"id\":3088,\"name\":\"El Desarrollo Women Coffee Washed - Colombian Specialty Coffee\",\"short_name\":\"El Desarrollo\",\"tagline\":\"A sweet and balanced washed coffee from women producers in Gigante, Huila, with nutty sweetness and red fruit.\",\"notes\":\"Vanilla, caramel, hazelnut, red fruits, cherry, almond, brown sugar\",\"process\":\"Washed\",\"best_for\":\"V60, filter coffee, AeroPress, batch brew, soft espresso\",\"why\":\"This match uses the coffee sensory profile, tasting notes, process and recommended brewing information from the shop.\",\"url\":\"https:\/\/beanjammingcoffee.com\/de\/product\/el-desarrollo-women-coffee-washed-colombian-specialty-coffee\/\",\"price\":\"\u20ac 14,50 - \u20ac 41,50\",\"image\":\"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2026\/06\/pomelli_photoshoot_image_1_1_0623-1.jpg\",\"search_text\":\"el desarrollo women coffee washed - colombian specialty coffee colombian specialty coffee from women producers in gigante huila washed castillo colombia and caturra with vanilla caramel hazelnut red fruits cherry almond and brown sugar juicy citrus acidity creamy medium body and sca 84 75 coffee huila process washed almond brown sugar caramel castillo coffee caturra coffee colombia variety colombian coffee el desarrollo espresso filter coffee gigante coffee hazelnut huila coffee red fruits specialty coffee vanilla washed coffee women coffee vanilla caramel hazelnut red fruits cherry almond brown sugar washed v60 filter coffee aeropress batch brew soft espresso a sweet and balanced washed coffee from women producers in gigante huila with nutty sweetness and red fruit fruit fruity chocolate caramel cocoa nuts nutty classic clean classic washed daily\",\"sensory\":{\"sweetness\":8.4,\"acidity\":7.2,\"body\":7.6,\"fruit\":7,\"chocolate_caramel\":8,\"fermentation\":2.5}},\"product_3127\":{\"id\":3127,\"name\":\"DaVida Papayo Natural - Colombian Specialty Coffee\",\"short_name\":\"DaVida Papayo\",\"tagline\":\"A rare and expressive Papayo natural with honeyed body, peach, black tea, cacao and clean anaerobic complexity.\",\"notes\":\"Brown sugar, chocolate, caramel, peach, black tea, cacao, berry, almond\",\"process\":\"Natural - 120h anaerobic fermentation\",\"best_for\":\"V60, filter coffee, AeroPress, modern espresso\",\"why\":\"This match uses the coffee sensory profile, tasting notes, process and recommended brewing information from the shop.\",\"url\":\"https:\/\/beanjammingcoffee.com\/de\/product\/davida-papayo-natural-colombian-specialty-coffee\/\",\"price\":\"\u20ac 22,50\",\"image\":\"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2026\/06\/pomelli_photoshoot_image_1_1_0623.png\",\"search_text\":\"davida papayo natural - colombian specialty coffee rare colombian papayo natural from el origen farms in quindio produced by david bedoya natural process with 120-hour anaerobic fermentation sca 87 expect brown sugar chocolate caramel peach black tea and cacao with medium-low citrus acidity and a creamy honey-sweet body coffee natural papayo process quindio almond anaerobic fermentation black tea brown sugar cacao caramel colombian coffee david bedoya davida el origen farms espresso filter coffee natural process papayo peach quindio coffee specialty coffee brown sugar chocolate caramel peach black tea cacao berry almond natural - 120h anaerobic fermentation v60 filter coffee aeropress modern espresso a rare and expressive papayo natural with honeyed body peach black tea cacao and clean anaerobic complexity sweet smooth balanced daily low acidity smooth round body round fruit fruity chocolate caramel cocoa nuts nutty classic anaerobic fermentation expressive complex natural special\",\"sensory\":{\"sweetness\":9,\"acidity\":6.2,\"body\":8.3,\"fruit\":8.2,\"chocolate_caramel\":8.4,\"fermentation\":7.5}},\"product_3213\":{\"id\":3213,\"name\":\"Finca San Jos\u00e9 BJC Blend \u2013 Colombian Specialty Coffee\",\"short_name\":\"Finca San Jos\u00e9\",\"tagline\":\"A floral and juicy washed Castillo with lemongrass, cane-sugar sweetness, yellow fruit and a semi-creamy body.\",\"notes\":\"Floral, lemongrass, cane sugar, pineapple, yellow fruit\",\"process\":\"Washed \u00b7 24h fermentation\",\"best_for\":\"V60, filter coffee, AeroPress, clean espresso\",\"why\":\"This match uses the coffee sensory profile, tasting notes, process and recommended brewing information from the shop.\",\"url\":\"https:\/\/beanjammingcoffee.com\/de\/product\/finca-san-jose-bjc-blend-colombian-specialty-coffee\/\",\"price\":\"\u20ac 14,50 - \u20ac 41,50\",\"image\":\"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2026\/08\/bjc-blend-cafe-colombiano-producto.webp\",\"search_text\":\"finca san jose bjc blend colombian specialty coffee bjc blend colombian specialty coffee from finca san jose in la concha quindio castillo grown at 1 750 m a s l and washed with 24-hour fermentation floral and juicy with lemongrass cane sugar pineapple and yellow fruit citric acidity and a semi-creamy body sca 84 5 castillo coffee process quindio washed cane sugar castillo coffee citric acidity colombian coffee filter coffee finca san jose floral coffee juicy coffee la concha coffee lemongrass pineapple quindio coffee specialty coffee washed coffee yellow fruit floral lemongrass cane sugar pineapple yellow fruit washed 24h fermentation v60 filter coffee aeropress clean espresso a floral and juicy washed castillo with lemongrass cane-sugar sweetness yellow fruit and a semi-creamy body bright lively citrus clean fruit fruity\",\"sensory\":{\"sweetness\":8,\"acidity\":8,\"body\":7.4,\"fruit\":8.1,\"chocolate_caramel\":6.2,\"fermentation\":3.5}},\"product_3214\":{\"id\":3214,\"name\":\"Plantas Buenavista Castillo Washed \u2013 Colombian Specialty Coffee\",\"short_name\":\"Plantas Buenavista\",\"tagline\":\"A sweet and balanced washed Castillo with chocolate-caramel depth, mandarin acidity and a silky light-to-medium body.\",\"notes\":\"Cocoa powder, dark chocolate, caramel, vanilla, mandarin, citrus, brown sugar, molasses, almond, nuts\",\"process\":\"Washed\",\"best_for\":\"Espresso, moka pot, filter coffee, milk drinks\",\"why\":\"This match uses the coffee sensory profile, tasting notes, process and recommended brewing information from the shop.\",\"url\":\"https:\/\/beanjammingcoffee.com\/de\/product\/plantas-buenavista-castillo-washed-colombian-specialty-coffee\/\",\"price\":\"\u20ac 15,00 - \u20ac 42,00\",\"image\":\"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2026\/08\/buenavista-cafe-colombiano-producto.webp\",\"search_text\":\"plantas buenavista castillo washed colombian specialty coffee single-farm colombian specialty coffee from finca plantas buenavista in ubaque cundinamarca washed castillo grown at 1 750 1 800 m a s l cocoa dark chocolate caramel and vanilla meet mandarin brown sugar molasses and almond with lively citric acidity and a silky light-to-medium body sca 85 castillo coffee cundinamarca process washed almond brown sugar cacao caramel castillo coffee chocolate coffee colombian coffee cundinamarca coffee dark chocolate espresso filter coffee finca plantas buenavista mandarin molasses nuts specialty coffee ubaque coffee vanilla washed coffee cocoa powder dark chocolate caramel vanilla mandarin citrus brown sugar molasses almond nuts washed espresso moka pot filter coffee milk drinks a sweet and balanced washed castillo with chocolate-caramel depth mandarin acidity and a silky light-to-medium body sweet smooth balanced daily fruit fruity chocolate caramel cocoa nuts nutty classic clean classic washed daily\",\"sensory\":{\"sweetness\":8.6,\"acidity\":7.9,\"body\":7.2,\"fruit\":7.4,\"chocolate_caramel\":8.7,\"fermentation\":2}},\"product_3325\":{\"id\":3325,\"name\":\"Rose Huila Traditional Natural \u2013 Colombian Specialty Coffee\",\"short_name\":\"Rose Huila\",\"tagline\":\"A sweet and fruit-forward traditional natural from Huila, layered with berries, ripe fruit, panela and a cacao-dark chocolate finish.\",\"notes\":\"Raspberry, red plum, red apple, apricot, pineapple, panela, cacao, dark chocolate, lemon\",\"process\":\"Traditional Natural\",\"best_for\":\"Filter coffee, V60, AeroPress, cold brew, modern espresso\",\"why\":\"This match uses the coffee sensory profile, tasting notes, process and recommended brewing information from the shop.\",\"url\":\"https:\/\/beanjammingcoffee.com\/de\/product\/rose-huila-traditional-natural-colombian-specialty-coffee\/\",\"price\":\"\u20ac 16,50 - \u20ac 48,00\",\"image\":\"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2026\/09\/rose-huila-cafe-colombiano-producto.webp\",\"search_text\":\"rose huila traditional natural colombian specialty coffee traditional natural coffee from huila colombia sca 86 with raspberry red plum apricot pineapple panela cacao and dark chocolate in a sweet fruit-forward cup castillo caturra cenicafe 1 coffee huila natural process apricot cacao castillo coffee caturra coffee cenicafe 1 colombian coffee dark chocolate filter coffee huila coffee lemon natural coffee panela pineapple raspberry red apple red plum rose huila specialty coffee traditional natural raspberry red plum red apple apricot pineapple panela cacao dark chocolate lemon traditional natural filter coffee v60 aeropress cold brew modern espresso a sweet and fruit-forward traditional natural from huila layered with berries ripe fruit panela and a cacao-dark chocolate finish sweet smooth balanced daily fruit fruity juicy berries aromatic chocolate caramel fermentation expressive natural\",\"sensory\":{\"sweetness\":8.8,\"acidity\":7.4,\"body\":7.5,\"fruit\":8.8,\"chocolate_caramel\":7.1,\"fermentation\":6}}},\"questions\":[{\"id\":\"brew\",\"eyebrow\":\"Question 1\",\"title\":\"How do you usually brew your coffee?\",\"subtitle\":\"Choose the method you use most often.\",\"options\":[{\"label\":\"Espresso or milk drinks\",\"description\":\"Round, sweet and comfortable with milk.\",\"signals\":{\"espresso\":3,\"milk\":3,\"moka\":2,\"chocolate\":1,\"caramel\":1},\"targets\":{\"chocolate_caramel\":{\"target\":8.4,\"weight\":5},\"body\":{\"target\":8.2,\"weight\":3},\"acidity\":{\"target\":6.6,\"weight\":3},\"sweetness\":{\"target\":8.8,\"weight\":3}}},{\"label\":\"Filter, V60 or AeroPress\",\"description\":\"Clarity, aroma and a clean cup.\",\"signals\":{\"filter\":3,\"v60\":3,\"aeropress\":2,\"washed\":2,\"clean\":2,\"citrus\":1,\"tea\":1},\"targets\":{\"acidity\":{\"target\":8.2,\"weight\":5},\"fruit\":{\"target\":8,\"weight\":3},\"fermentation\":{\"target\":4.5,\"weight\":2},\"body\":{\"target\":7.4,\"weight\":1}}},{\"label\":\"Moka pot or French press\",\"description\":\"Tasty, practical and easy to brew.\",\"signals\":{\"moka\":3,\"french press\":3,\"chocolate\":2,\"caramel\":2,\"body\":2,\"balanced\":2},\"targets\":{\"body\":{\"target\":8.4,\"weight\":5},\"chocolate_caramel\":{\"target\":8.3,\"weight\":4},\"acidity\":{\"target\":6.8,\"weight\":3},\"sweetness\":{\"target\":8.7,\"weight\":2}}},{\"label\":\"Iced coffee or special recipes\",\"description\":\"Juicy, fruity and expressive.\",\"signals\":{\"cold brew\":3,\"natural\":3,\"fruit\":3,\"fruity\":3,\"juicy\":2,\"berries\":1,\"peach\":1},\"targets\":{\"fruit\":{\"target\":8.7,\"weight\":5},\"fermentation\":{\"target\":6.5,\"weight\":4},\"acidity\":{\"target\":7.4,\"weight\":2},\"sweetness\":{\"target\":8.6,\"weight\":1}}}]},{\"id\":\"taste\",\"eyebrow\":\"Question 2\",\"title\":\"Which flavour sounds best to you?\",\"subtitle\":\"There are no wrong answers here.\",\"options\":[{\"label\":\"Chocolate, caramel and nuts\",\"description\":\"Comforting, sweet and familiar.\",\"signals\":{\"chocolate\":3,\"cacao\":3,\"cocoa\":3,\"caramel\":3,\"panela\":2,\"brown sugar\":2,\"almond\":2,\"hazelnut\":2,\"nuts\":2},\"targets\":{\"chocolate_caramel\":{\"target\":8.7,\"weight\":6},\"sweetness\":{\"target\":8.8,\"weight\":3},\"body\":{\"target\":8,\"weight\":2}}},{\"label\":\"Citrus, honey and tea-like notes\",\"description\":\"Clean, bright and elegant.\",\"signals\":{\"citrus\":3,\"orange\":3,\"mandarin\":2,\"honey\":2,\"tea\":2,\"black tea\":2,\"washed\":1,\"clean\":1},\"targets\":{\"acidity\":{\"target\":8.4,\"weight\":6},\"fruit\":{\"target\":8.2,\"weight\":2},\"fermentation\":{\"target\":4.5,\"weight\":2}}},{\"label\":\"Peach, berries and ripe fruit\",\"description\":\"Juicy, fruity and aromatic.\",\"signals\":{\"peach\":3,\"stone fruit\":3,\"berries\":3,\"berry\":3,\"blackberry\":2,\"strawberry\":2,\"red fruits\":2,\"grape\":2,\"juicy\":2,\"fruity\":2},\"targets\":{\"fruit\":{\"target\":8.8,\"weight\":6},\"acidity\":{\"target\":7.6,\"weight\":2},\"sweetness\":{\"target\":8.7,\"weight\":2}}},{\"label\":\"Floral and expressive\",\"description\":\"Something special and a little different.\",\"signals\":{\"floral\":3,\"rose\":3,\"hibiscus\":3,\"natural\":2,\"anaerobic\":3,\"fermentation\":2,\"complex\":2,\"expressive\":2},\"targets\":{\"fermentation\":{\"target\":7.3,\"weight\":6},\"fruit\":{\"target\":8.5,\"weight\":3},\"acidity\":{\"target\":7.6,\"weight\":2}}}]},{\"id\":\"acidity\",\"eyebrow\":\"Question 3\",\"title\":\"How do you feel about acidity?\",\"subtitle\":\"In coffee, acidity means brightness, not sourness.\",\"options\":[{\"label\":\"Keep it soft and balanced\",\"description\":\"Smooth coffees with gentle acidity.\",\"signals\":{\"balanced\":3,\"smooth\":3,\"round\":2,\"sweet\":2,\"chocolate\":1,\"caramel\":1,\"low acidity\":3},\"targets\":{\"acidity\":{\"target\":6.4,\"weight\":6},\"body\":{\"target\":8.2,\"weight\":3},\"chocolate_caramel\":{\"target\":8,\"weight\":2}}},{\"label\":\"A little brightness is nice\",\"description\":\"Balanced, but with some fruit and energy.\",\"signals\":{\"balanced\":2,\"bright\":2,\"fruit\":2,\"fruity\":2,\"mandarin\":1,\"orange\":1,\"peach\":1},\"targets\":{\"acidity\":{\"target\":7.4,\"weight\":5},\"fruit\":{\"target\":8,\"weight\":3},\"fermentation\":{\"target\":4.8,\"weight\":1}}},{\"label\":\"I love bright and lively coffee\",\"description\":\"Citrus, fruit and clarity.\",\"signals\":{\"bright\":3,\"lively\":3,\"citrus\":3,\"orange\":2,\"clean\":2,\"washed\":1,\"tea\":1},\"targets\":{\"acidity\":{\"target\":8.4,\"weight\":6},\"fruit\":{\"target\":8.3,\"weight\":2},\"fermentation\":{\"target\":4.5,\"weight\":1}}},{\"label\":\"Juicy fruit, not sharpness\",\"description\":\"Fruitiness without a sharp cup.\",\"signals\":{\"juicy\":3,\"fruit\":3,\"fruity\":3,\"natural\":2,\"peach\":2,\"berries\":2,\"sweet\":1},\"targets\":{\"fruit\":{\"target\":8.8,\"weight\":6},\"acidity\":{\"target\":7,\"weight\":4},\"fermentation\":{\"target\":6.2,\"weight\":2}}}]},{\"id\":\"experience\",\"eyebrow\":\"Question 4\",\"title\":\"What kind of coffee experience do you want today?\",\"subtitle\":\"Choose the answer that feels closest.\",\"options\":[{\"label\":\"A reliable daily coffee\",\"description\":\"Something steady for every morning.\",\"signals\":{\"daily\":3,\"balanced\":3,\"smooth\":2,\"classic\":2,\"chocolate\":1,\"caramel\":1,\"washed\":1},\"targets\":{\"fermentation\":{\"target\":2.5,\"weight\":5},\"chocolate_caramel\":{\"target\":8.2,\"weight\":4},\"body\":{\"target\":7.8,\"weight\":2},\"acidity\":{\"target\":7,\"weight\":2}}},{\"label\":\"A clean specialty coffee\",\"description\":\"Transparent, balanced and easy to understand.\",\"signals\":{\"clean\":3,\"washed\":3,\"transparent\":2,\"balanced\":2,\"filter\":1,\"v60\":1,\"tea\":1},\"targets\":{\"acidity\":{\"target\":8,\"weight\":4},\"fermentation\":{\"target\":4.5,\"weight\":4},\"fruit\":{\"target\":8,\"weight\":2}}},{\"label\":\"Something expressive\",\"description\":\"A coffee that feels memorable.\",\"signals\":{\"expressive\":3,\"complex\":3,\"special\":2,\"natural\":2,\"anaerobic\":3,\"fermentation\":3,\"floral\":2,\"juicy\":1},\"targets\":{\"fermentation\":{\"target\":7.5,\"weight\":6},\"fruit\":{\"target\":8.5,\"weight\":3},\"acidity\":{\"target\":7.5,\"weight\":1}}},{\"label\":\"A fruit-forward coffee\",\"description\":\"Juicy notes and a more aromatic cup.\",\"signals\":{\"fruit\":3,\"fruity\":3,\"juicy\":2,\"aromatic\":2,\"natural\":2,\"berries\":2,\"peach\":2,\"grape\":1},\"targets\":{\"fruit\":{\"target\":8.8,\"weight\":6},\"fermentation\":{\"target\":6.5,\"weight\":3},\"acidity\":{\"target\":7.4,\"weight\":2}}}]}],\"alternative_count\":4}            <\/script>\n        <\/section>\n\n        \n        <\/div>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <section id=\"bjc-lab-brew\" class=\"bjc-lab-section bjc-lab-section-dark\">\n    <div class=\"bjc-lab-wrap\">\n      <article class=\"bjc-lab-tool-card\">\n        <div class=\"bjc-lab-tool-top\">\n          <div>\n            <span class=\"bjc-lab-eyebrow\">Tool 02<\/span>\n            <h2 class=\"bjc-lab-tool-title\">Find your brew balance.<\/h2>\n            <p class=\"bjc-lab-tool-text\">\n              Is your cup too sour, too bitter, too weak or too heavy? Adjust the variables and\n              understand what each change can do before changing your whole recipe.\n            <\/p>\n          <\/div>\n\n          <div class=\"bjc-lab-tool-index\">02<\/div>\n        <\/div>\n\n        <div class=\"bjc-lab-tool-slot\">\n          \n        <style id=\"bjc-brew-lab-style\">\n            @import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600;700;800&display=swap');\n\n            .bjc-brew-lab {\n                --bjc-green: #1D4C23;\n                --bjc-lime: #E5FF00;\n                --bjc-cream: #F3E8CD;\n                --bjc-text: #1D4C23;\n                --bjc-muted: rgba(29, 76, 35, 0.76);\n                --bjc-white: #ffffff;\n\n                width: 100%;\n                max-width: 1120px;\n                margin: 56px auto;\n                padding: 48px 24px;\n                background: var(--bjc-cream);\n                border-radius: 28px;\n                color: var(--bjc-text);\n                font-family: \"DM Sans\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n                overflow: hidden;\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n                -webkit-tap-highlight-color: rgba(229, 255, 0, 0.28);\n            }\n\n            .bjc-brew-lab,\n            .bjc-brew-lab * {\n                box-sizing: border-box;\n                max-width: 100%;\n            }\n\n            .bjc-brew-lab * {\n                -webkit-text-size-adjust: 100%;\n                text-size-adjust: 100%;\n            }\n\n            .bjc-brew-lab__inner {\n                background: var(--bjc-cream);\n                border: 0;\n                border-radius: 0;\n                box-shadow: none;\n                overflow: visible;\n            }\n\n            .bjc-brew-lab__hero {\n                display: grid;\n                grid-template-columns: minmax(0, 1fr) minmax(260px, 360px);\n                gap: 28px;\n                align-items: end;\n                padding: 0 0 30px;\n            }\n\n            .bjc-brew-lab__eyebrow {\n                display: inline-flex;\n                align-items: center;\n                gap: 8px;\n                width: fit-content;\n                padding: 7px 12px;\n                border-radius: 999px;\n                background: var(--bjc-green);\n                color: #fff;\n                font-size: 0.78rem;\n                font-weight: 800;\n                text-transform: uppercase;\n            }\n\n            .bjc-brew-lab__eyebrow::before {\n                content: \"\";\n                width: 8px;\n                height: 8px;\n                border-radius: 999px;\n                background: var(--bjc-lime);\n                flex: 0 0 auto;\n            }\n\n            .bjc-brew-lab h2 {\n                max-width: 760px;\n                margin: 18px 0 12px;\n                color: var(--bjc-green);\n                font-size: clamp(2.4rem, 6vw, 5rem);\n                line-height: 1.02;\n                font-weight: 800;\n                letter-spacing: -0.045em;\n            }\n\n            .bjc-brew-lab__hero p {\n                max-width: 700px;\n                margin: 0;\n                color: var(--bjc-muted);\n                font-size: clamp(1rem, 2vw, 1.14rem);\n                line-height: 1.65;\n            }\n\n            .bjc-brew-lab__mini-note,\n            .bjc-brew-lab__controls,\n            .bjc-brew-lab__results,\n            .bjc-brew-lab__slider-card,\n            .bjc-brew-lab__bar,\n            .bjc-brew-lab__tip {\n                background: #ffffff;\n                border: 2px solid var(--bjc-green);\n                border-radius: 24px;\n                box-shadow: 8px 8px 0 var(--bjc-green);\n            }\n\n            .bjc-brew-lab__mini-note {\n                display: grid;\n                gap: 7px;\n                padding: 20px;\n            }\n\n            .bjc-brew-lab__mini-note strong {\n                color: var(--bjc-green);\n                font-size: 0.95rem;\n                line-height: 1.2;\n            }\n\n            .bjc-brew-lab__mini-note span {\n                color: var(--bjc-muted);\n                font-size: 0.92rem;\n                line-height: 1.45;\n            }\n\n            .bjc-brew-lab__grid {\n                display: grid;\n                grid-template-columns: minmax(280px, 0.82fr) minmax(340px, 1.18fr);\n                gap: 22px;\n                align-items: start;\n            }\n\n            .bjc-brew-lab__controls {\n                display: grid;\n                gap: 16px;\n                align-content: start;\n                padding: clamp(20px, 4vw, 30px);\n                position: sticky;\n                top: 18px;\n            }\n\n            .bjc-brew-lab__field {\n                display: grid;\n                gap: 8px;\n            }\n\n            .bjc-brew-lab label,\n            .bjc-brew-lab__slider-head label {\n                color: var(--bjc-green);\n                font-size: 0.88rem;\n                font-weight: 800;\n            }\n\n            .bjc-brew-lab__method {\n                width: 100%;\n                min-height: 52px;\n                padding: 0 16px;\n                border-radius: 16px;\n                border: 2px solid var(--bjc-green);\n                background: #fff;\n                color: var(--bjc-green);\n                font-family: inherit;\n                font-size: 16px;\n                font-weight: 800;\n                outline: none;\n                appearance: auto;\n            }\n\n            .bjc-brew-lab__method:focus {\n                box-shadow: 0 0 0 3px rgba(229, 255, 0, 0.65);\n            }\n\n            .bjc-brew-lab__slider-card {\n                display: grid;\n                gap: 12px;\n                padding: 18px;\n            }\n\n            .bjc-brew-lab__slider-head {\n                display: flex;\n                align-items: center;\n                justify-content: space-between;\n                gap: 16px;\n            }\n\n            .bjc-brew-lab__slider-head strong {\n                color: var(--bjc-green);\n                font-size: 0.98rem;\n                white-space: nowrap;\n            }\n\n            .bjc-brew-lab input[type=\"range\"] {\n                width: 100%;\n                height: 34px;\n                accent-color: var(--bjc-green);\n                cursor: pointer;\n            }\n\n            .bjc-brew-lab__scale {\n                display: flex;\n                justify-content: space-between;\n                color: rgba(29, 76, 35, 0.68);\n                font-size: 0.82rem;\n                font-weight: 700;\n            }\n\n            .bjc-brew-lab__target {\n                display: grid;\n                gap: 4px;\n                padding: 18px;\n                border: 2px solid var(--bjc-green);\n                border-radius: 24px;\n                background: var(--bjc-green);\n                color: #fff;\n                box-shadow: 8px 8px 0 var(--bjc-green);\n            }\n\n            .bjc-brew-lab__target span {\n                color: rgba(255, 255, 255, 0.72);\n                font-size: 0.78rem;\n                font-weight: 800;\n                text-transform: uppercase;\n            }\n\n            .bjc-brew-lab__target strong {\n                color: var(--bjc-lime);\n                font-size: 1.08rem;\n                line-height: 1.3;\n            }\n\n            .bjc-brew-lab__reset {\n                min-height: 50px;\n                border: 2px solid var(--bjc-green);\n                border-radius: 999px;\n                background: var(--bjc-lime);\n                color: var(--bjc-green);\n                box-shadow: 4px 4px 0 var(--bjc-green);\n                cursor: pointer;\n                font-family: inherit;\n                font-size: 16px;\n                font-weight: 800;\n                line-height: 1.1;\n                touch-action: manipulation;\n                -webkit-user-select: none;\n                user-select: none;\n                transition: transform 0.18s ease, box-shadow 0.18s ease;\n            }\n\n            .bjc-brew-lab__results {\n                display: grid;\n                gap: 18px;\n                padding: clamp(20px, 4vw, 30px);\n            }\n\n            .bjc-brew-lab__status-card {\n                min-height: 360px;\n                display: flex;\n                flex-direction: column;\n                padding: clamp(22px, 4vw, 34px);\n                border: 2px solid var(--bjc-green);\n                border-radius: 24px;\n                background: var(--bjc-green);\n                color: #fff;\n                box-shadow: 8px 8px 0 var(--bjc-green);\n            }\n\n            .bjc-brew-lab__status-kicker {\n                display: inline-flex;\n                margin-bottom: 10px;\n                color: var(--bjc-lime);\n                font-size: 0.78rem;\n                font-weight: 800;\n                text-transform: uppercase;\n            }\n\n            .bjc-brew-lab__status-title {\n                min-height: 1.7em;\n                display: flex;\n                align-items: flex-end;\n                margin: 0 0 8px;\n                color: #fff;\n                font-size: clamp(2.3rem, 4.4vw, 4.2rem);\n                line-height: 1.03;\n                font-weight: 800;\n                letter-spacing: -0.045em;\n            }\n\n            .bjc-brew-lab__status-text {\n                min-height: 3.2em;\n                max-width: 640px;\n                margin: 0;\n                color: rgba(255, 255, 255, 0.82);\n                line-height: 1.55;\n            }\n\n            .bjc-brew-lab__meter {\n                margin-top: auto;\n                padding-top: 24px;\n            }\n\n            .bjc-brew-lab__meter-zones {\n                display: grid;\n                grid-template-columns: repeat(3, 1fr);\n                margin-bottom: 8px;\n                color: rgba(255, 255, 255, 0.72);\n                font-size: 0.76rem;\n                font-weight: 800;\n                text-transform: uppercase;\n            }\n\n            .bjc-brew-lab__meter-zones span:nth-child(2) {\n                text-align: center;\n            }\n\n            .bjc-brew-lab__meter-zones span:nth-child(3) {\n                text-align: right;\n            }\n\n            .bjc-brew-lab__meter-track {\n                position: relative;\n                height: 18px;\n                border-radius: 999px;\n                background: rgba(255, 255, 255, 0.34);\n                border: 1px solid rgba(255, 255, 255, 0.42);\n            }\n\n            .bjc-brew-lab__meter-marker {\n                position: absolute;\n                top: 50%;\n                left: 50%;\n                width: 30px;\n                height: 30px;\n                border: 4px solid #fff;\n                border-radius: 999px;\n                background: var(--bjc-lime);\n                transform: translate(-50%, -50%);\n                transition: left 0.25s ease;\n            }\n\n            .bjc-brew-lab__bars {\n                display: grid;\n                gap: 12px;\n            }\n\n            .bjc-brew-lab__bar {\n                display: grid;\n                gap: 8px;\n                padding: 16px;\n            }\n\n            .bjc-brew-lab__bar > div:first-child {\n                display: flex;\n                justify-content: space-between;\n                gap: 14px;\n                color: var(--bjc-green);\n            }\n\n            .bjc-brew-lab__bar strong {\n                font-size: 0.95rem;\n            }\n\n            .bjc-brew-lab__bar-value {\n                color: rgba(29, 76, 35, 0.70);\n                font-size: 0.88rem;\n                font-weight: 800;\n            }\n\n            .bjc-brew-lab__bar-track {\n                overflow: hidden;\n                height: 12px;\n                border-radius: 999px;\n                background: rgba(29, 76, 35, 0.12);\n            }\n\n            .bjc-brew-lab__bar-track span {\n                display: block;\n                width: 50%;\n                height: 100%;\n                border-radius: inherit;\n                background: var(--bjc-green);\n                transition: width 0.25s ease;\n            }\n\n            .bjc-brew-lab__tip {\n                display: grid;\n                gap: 6px;\n                padding: 20px;\n            }\n\n            .bjc-brew-lab__tip span {\n                color: var(--bjc-green);\n                font-size: 0.78rem;\n                font-weight: 800;\n                text-transform: uppercase;\n            }\n\n            .bjc-brew-lab__tip p {\n                margin: 0;\n                color: var(--bjc-muted);\n                line-height: 1.55;\n            }\n\n            .bjc-brew-lab button:focus-visible,\n            .bjc-brew-lab select:focus-visible,\n            .bjc-brew-lab input:focus-visible {\n                outline: 3px solid rgba(229, 255, 0, 0.75);\n                outline-offset: 3px;\n            }\n\n            @media (hover: hover) and (pointer: fine) {\n                .bjc-brew-lab__reset:hover {\n                    transform: translate(2px, 2px);\n                    box-shadow: 2px 2px 0 var(--bjc-green);\n                }\n            }\n\n            @media (hover: none) and (pointer: coarse) {\n                .bjc-brew-lab__reset:active {\n                    transform: scale(0.985);\n                }\n            }\n\n            @media (max-width: 980px) {\n                .bjc-brew-lab__hero,\n                .bjc-brew-lab__grid {\n                    grid-template-columns: 1fr;\n                }\n\n                .bjc-brew-lab__controls {\n                    position: static;\n                }\n\n                .bjc-brew-lab__status-card {\n                    min-height: 320px;\n                }\n            }\n\n            @media (max-width: 620px) {\n                .bjc-brew-lab {\n                    margin: 24px auto;\n                    padding: 22px 14px;\n                    border-radius: 22px;\n                }\n\n                .bjc-brew-lab__hero {\n                    gap: 16px;\n                    padding: 0 0 18px;\n                }\n\n                .bjc-brew-lab h2 {\n                    font-size: clamp(2rem, 11vw, 2.85rem);\n                    line-height: 1.01;\n                    margin: 14px 0 10px;\n                }\n\n                .bjc-brew-lab__hero p {\n                    font-size: 0.96rem;\n                    line-height: 1.48;\n                }\n\n                .bjc-brew-lab__eyebrow {\n                    font-size: 0.68rem;\n                }\n\n                .bjc-brew-lab__mini-note,\n                .bjc-brew-lab__controls,\n                .bjc-brew-lab__results,\n                .bjc-brew-lab__slider-card,\n                .bjc-brew-lab__bar,\n                .bjc-brew-lab__tip,\n                .bjc-brew-lab__status-card,\n                .bjc-brew-lab__target {\n                    border-radius: 18px;\n                    box-shadow: 3px 3px 0 var(--bjc-green);\n                }\n\n                .bjc-brew-lab__mini-note {\n                    padding: 14px;\n                }\n\n                .bjc-brew-lab__mini-note span {\n                    font-size: 0.86rem;\n                }\n\n                .bjc-brew-lab__grid {\n                    gap: 16px;\n                }\n\n                .bjc-brew-lab__controls,\n                .bjc-brew-lab__results {\n                    padding: 16px 12px;\n                }\n\n                .bjc-brew-lab__slider-card {\n                    gap: 10px;\n                    padding: 14px;\n                }\n\n                .bjc-brew-lab__slider-head {\n                    align-items: flex-start;\n                    flex-direction: column;\n                    gap: 4px;\n                }\n\n                .bjc-brew-lab__slider-head strong {\n                    font-size: 0.94rem;\n                }\n\n                .bjc-brew-lab input[type=\"range\"] {\n                    height: 42px;\n                }\n\n                .bjc-brew-lab__method {\n                    min-height: 48px;\n                    border-radius: 14px;\n                    font-size: 16px;\n                }\n\n                .bjc-brew-lab__target {\n                    padding: 14px;\n                }\n\n                .bjc-brew-lab__target strong {\n                    font-size: 0.98rem;\n                }\n\n                .bjc-brew-lab__reset {\n                    width: 100%;\n                    min-height: 46px;\n                    padding: 12px 14px;\n                    font-size: 0.94rem;\n                    box-shadow: 3px 3px 0 var(--bjc-green);\n                }\n\n                .bjc-brew-lab__status-card {\n                    min-height: auto;\n                    padding: 18px 14px;\n                }\n\n                .bjc-brew-lab__status-title {\n                    min-height: auto;\n                    font-size: clamp(1.9rem, 10vw, 2.75rem);\n                    line-height: 1.02;\n                }\n\n                .bjc-brew-lab__status-text {\n                    min-height: auto;\n                    font-size: 0.94rem;\n                    line-height: 1.46;\n                }\n\n                .bjc-brew-lab__meter {\n                    margin-top: 22px;\n                    padding-top: 0;\n                }\n\n                .bjc-brew-lab__meter-zones {\n                    font-size: 0.66rem;\n                }\n\n                .bjc-brew-lab__meter-track {\n                    height: 16px;\n                }\n\n                .bjc-brew-lab__meter-marker {\n                    width: 26px;\n                    height: 26px;\n                    border-width: 3px;\n                }\n\n                .bjc-brew-lab__bars {\n                    gap: 10px;\n                }\n\n                .bjc-brew-lab__bar {\n                    padding: 13px;\n                    gap: 7px;\n                }\n\n                .bjc-brew-lab__bar > div:first-child {\n                    align-items: flex-start;\n                    flex-direction: column;\n                    gap: 3px;\n                }\n\n                .bjc-brew-lab__bar strong {\n                    font-size: 0.92rem;\n                }\n\n                .bjc-brew-lab__bar-value {\n                    font-size: 0.82rem;\n                }\n\n                .bjc-brew-lab__bar-track {\n                    height: 10px;\n                }\n\n                .bjc-brew-lab__tip {\n                    padding: 14px;\n                }\n\n                .bjc-brew-lab__tip p {\n                    font-size: 0.9rem;\n                    line-height: 1.45;\n                }\n            }\n\n            @media (max-width: 380px) {\n                .bjc-brew-lab {\n                    padding: 18px 10px;\n                }\n\n                .bjc-brew-lab__controls,\n                .bjc-brew-lab__results {\n                    padding-left: 10px;\n                    padding-right: 10px;\n                }\n\n                .bjc-brew-lab h2 {\n                    font-size: clamp(1.85rem, 10.5vw, 2.45rem);\n                }\n            }\n\n            @media (prefers-reduced-motion: reduce) {\n                .bjc-brew-lab *,\n                .bjc-brew-lab *::before,\n                .bjc-brew-lab *::after {\n                    animation-duration: 0.001ms !important;\n                    animation-iteration-count: 1 !important;\n                    transition-duration: 0.001ms !important;\n                    scroll-behavior: auto !important;\n                }\n            }\n        <\/style>\n\n        <script id=\"bjc-brew-lab-script\">\n            (function () {\n                'use strict';\n\n                function ready(fn) {\n                    if (document.readyState !== 'loading') {\n                        fn();\n                    } else {\n                        document.addEventListener('DOMContentLoaded', fn);\n                    }\n                }\n\n                function clamp(value, min, max) {\n                    return Math.max(min, Math.min(max, value));\n                }\n\n                function round(value) {\n                    return Math.round(value);\n                }\n\n                function qualityLabel(value) {\n                    if (value < 22) return 'Very low';\n                    if (value < 42) return 'Low';\n                    if (value < 62) return 'Medium';\n                    if (value < 82) return 'High';\n                    return 'Very high';\n                }\n\n                function grindLabel(value) {\n                    value = Number(value);\n\n                    if (value < 16) return 'Very fine';\n                    if (value < 30) return 'Fine';\n                    if (value < 45) return 'Medium-fine';\n                    if (value < 62) return 'Medium';\n                    if (value < 78) return 'Medium-coarse';\n\n                    return 'Coarse';\n                }\n\n                var methods = {\n                    espresso: {\n                        name: 'Espresso',\n                        targetGrind: 18,\n                        targetTemp: 93,\n                        grindSensitivity: 0.72,\n                        tempSensitivity: 4.2,\n                        bodyBase: 76,\n                        clarityBase: 54,\n                        targetText: 'Fine grind \u00b7 92\u201394\u00b0C',\n                        note: 'Espresso is very sensitive to small grind changes. For medium omni roast Colombian coffees, 93\u00b0C is a strong starting point.'\n                    },\n                    v60: {\n                        name: 'V60 \/ Pour Over',\n                        targetGrind: 55,\n                        targetTemp: 94,\n                        grindSensitivity: 0.58,\n                        tempSensitivity: 3.5,\n                        bodyBase: 48,\n                        clarityBase: 78,\n                        targetText: 'Medium-fine to medium grind \u00b7 92\u201396\u00b0C',\n                        note: 'For Colombian omni roast coffees, start around 94\u00b0C. Go hotter for more extraction, or slightly cooler if the cup becomes dry or bitter.'\n                    },\n                    aeropress: {\n                        name: 'AeroPress',\n                        targetGrind: 45,\n                        targetTemp: 90,\n                        grindSensitivity: 0.50,\n                        tempSensitivity: 3.2,\n                        bodyBase: 58,\n                        clarityBase: 68,\n                        targetText: 'Medium-fine grind \u00b7 88\u201390\u00b0C',\n                        note: 'AeroPress is flexible. Official recipes often use lower temperatures, but 88\u201390\u00b0C is a useful starting point for medium omni roast Colombian coffees.'\n                    },\n                    moka: {\n                        name: 'Moka Pot',\n                        targetGrind: 36,\n                        targetTemp: 92,\n                        grindSensitivity: 0.66,\n                        tempSensitivity: 3.4,\n                        bodyBase: 72,\n                        clarityBase: 48,\n                        targetText: 'Medium-fine grind \u00b7 90\u201395\u00b0C starting water',\n                        note: 'For moka pot, use a grind between espresso and filter. Avoid tamping and use gentle heat to reduce bitterness.'\n                    },\n                    frenchpress: {\n                        name: 'French Press',\n                        targetGrind: 78,\n                        targetTemp: 93,\n                        grindSensitivity: 0.44,\n                        tempSensitivity: 3.0,\n                        bodyBase: 74,\n                        clarityBase: 42,\n                        targetText: 'Medium-coarse to coarse grind \u00b7 93\u201394\u00b0C',\n                        note: 'French press benefits from a coarser grind and stable heat. Start at 93\u00b0C for sweetness and balance.'\n                    },\n                    batch: {\n                        name: 'Batch Brew',\n                        targetGrind: 60,\n                        targetTemp: 94,\n                        grindSensitivity: 0.54,\n                        tempSensitivity: 3.4,\n                        bodyBase: 55,\n                        clarityBase: 70,\n                        targetText: 'Medium grind \u00b7 92\u201396\u00b0C',\n                        note: 'Batch brew works best with repeatable settings. Start at 94\u00b0C and adjust grind before changing temperature.'\n                    }\n                };\n\n                function calculate(method, grind, temp) {\n                    var grindEffect = (method.targetGrind - grind) * method.grindSensitivity;\n                    var tempEffect = (temp - method.targetTemp) * method.tempSensitivity;\n                    var extraction = clamp(50 + grindEffect + tempEffect, 0, 100);\n                    var distanceFromBalance = Math.abs(extraction - 50);\n\n                    var sweetness = clamp(88 - (distanceFromBalance * 1.35), 8, 94);\n\n                    var acidity = clamp(\n                        48 + Math.max(0, 50 - extraction) * 0.86 - Math.max(0, extraction - 58) * 0.25,\n                        10,\n                        92\n                    );\n\n                    var bitterness = clamp(\n                        16 + Math.max(0, extraction - 52) * 1.35 + Math.max(0, temp - method.targetTemp - 1) * 3,\n                        6,\n                        94\n                    );\n\n                    var body = clamp(\n                        method.bodyBase + Math.max(0, method.targetGrind - grind) * 0.22 + Math.max(0, extraction - 50) * 0.22 - Math.max(0, 40 - extraction) * 0.32,\n                        12,\n                        94\n                    );\n\n                    var clarity = clamp(\n                        method.clarityBase - distanceFromBalance * 0.48 - Math.max(0, method.targetGrind - grind) * 0.18,\n                        12,\n                        94\n                    );\n\n                    return {\n                        extraction: extraction,\n                        sweetness: sweetness,\n                        acidity: acidity,\n                        bitterness: bitterness,\n                        body: body,\n                        clarity: clarity\n                    };\n                }\n\n                function statusFromExtraction(extraction) {\n                    if (extraction < 30) {\n                        return {\n                            title: 'Under-extracted',\n                            text: 'This cup may taste sharp, sour or thin. The coffee is not giving enough sweetness yet.',\n                            tip: 'Try grinding finer first. You can also increase the water temperature by 1\u20132\u00b0C.'\n                        };\n                    }\n\n                    if (extraction < 43) {\n                        return {\n                            title: 'Slightly under-extracted',\n                            text: 'This setting may produce a brighter cup with lighter body and less sweetness.',\n                            tip: 'Move a little finer, or raise the temperature slightly to bring out more sweetness.'\n                        };\n                    }\n\n                    if (extraction <= 58) {\n                        return {\n                            title: 'Balanced',\n                            text: 'This setting should produce a sweet, clean and balanced cup.',\n                            tip: 'This is a good starting point. Adjust one variable at a time and taste the difference.'\n                        };\n                    }\n\n                    if (extraction <= 70) {\n                        return {\n                            title: 'Slightly over-extracted',\n                            text: 'This cup may have more body, but bitterness and dryness can start to appear.',\n                            tip: 'Try grinding a little coarser, or lower the water temperature by 1\u20132\u00b0C.'\n                        };\n                    }\n\n                    return {\n                        title: 'Over-extracted',\n                        text: 'This cup may taste bitter, dry or heavy. Too much has been extracted from the coffee.',\n                        tip: 'Grind coarser first. You can also reduce the water temperature slightly.'\n                    };\n                }\n\n                function setBar(block, sensor, value) {\n                    var bar = block.querySelector('.bjc-brew-lab__bar[data-sensor=\"' + sensor + '\"]');\n\n                    if (!bar) {\n                        return;\n                    }\n\n                    var fill = bar.querySelector('.bjc-brew-lab__bar-track span');\n                    var label = bar.querySelector('.bjc-brew-lab__bar-value');\n\n                    if (fill) {\n                        fill.style.width = clamp(value, 0, 100) + '%';\n                    }\n\n                    if (label) {\n                        label.textContent = qualityLabel(value);\n                    }\n                }\n\n                function updateBlock(block) {\n                    var methodSelect = block.querySelector('.bjc-brew-lab__method');\n                    var grindInput = block.querySelector('.bjc-brew-lab__grind');\n                    var tempInput = block.querySelector('.bjc-brew-lab__temp');\n\n                    if (!methodSelect || !grindInput || !tempInput) {\n                        return;\n                    }\n\n                    var method = methods[methodSelect.value] || methods.v60;\n                    var grind = Number(grindInput.value);\n                    var temp = Number(tempInput.value);\n\n                    var result = calculate(method, grind, temp);\n                    var status = statusFromExtraction(result.extraction);\n\n                    var grindLabelEl = block.querySelector('.bjc-brew-lab__grind-label');\n                    var tempValueEl = block.querySelector('.bjc-brew-lab__temp-value');\n                    var targetTextEl = block.querySelector('.bjc-brew-lab__target-text');\n                    var statusTitleEl = block.querySelector('.bjc-brew-lab__status-title');\n                    var statusTextEl = block.querySelector('.bjc-brew-lab__status-text');\n                    var tipTextEl = block.querySelector('.bjc-brew-lab__tip-text');\n                    var marker = block.querySelector('.bjc-brew-lab__meter-marker');\n\n                    if (grindLabelEl) {\n                        grindLabelEl.textContent = grindLabel(grind);\n                    }\n\n                    if (tempValueEl) {\n                        tempValueEl.textContent = temp;\n                    }\n\n                    if (targetTextEl) {\n                        targetTextEl.textContent = method.targetText;\n                    }\n\n                    if (statusTitleEl) {\n                        statusTitleEl.textContent = status.title;\n                    }\n\n                    if (statusTextEl) {\n                        statusTextEl.textContent = status.text;\n                    }\n\n                    if (tipTextEl) {\n                        tipTextEl.textContent = status.tip + ' ' + method.note;\n                    }\n\n                    if (marker) {\n                        marker.style.left = clamp(result.extraction, 4, 96) + '%';\n                    }\n\n                    setBar(block, 'acidity', round(result.acidity));\n                    setBar(block, 'sweetness', round(result.sweetness));\n                    setBar(block, 'bitterness', round(result.bitterness));\n                    setBar(block, 'body', round(result.body));\n                    setBar(block, 'clarity', round(result.clarity));\n                }\n\n                function resetToMethod(block) {\n                    var methodSelect = block.querySelector('.bjc-brew-lab__method');\n                    var grindInput = block.querySelector('.bjc-brew-lab__grind');\n                    var tempInput = block.querySelector('.bjc-brew-lab__temp');\n\n                    if (!methodSelect || !grindInput || !tempInput) {\n                        return;\n                    }\n\n                    var method = methods[methodSelect.value] || methods.v60;\n\n                    grindInput.value = method.targetGrind;\n                    tempInput.value = method.targetTemp;\n\n                    updateBlock(block);\n                }\n\n                function initBrewLab(block) {\n                    if (!block || block.dataset.bjcBrewReady === '1') {\n                        return;\n                    }\n\n                    block.dataset.bjcBrewReady = '1';\n\n                    var methodSelect = block.querySelector('.bjc-brew-lab__method');\n                    var grindInput = block.querySelector('.bjc-brew-lab__grind');\n                    var tempInput = block.querySelector('.bjc-brew-lab__temp');\n                    var resetButton = block.querySelector('.bjc-brew-lab__reset');\n\n                    if (!methodSelect || !grindInput || !tempInput) {\n                        return;\n                    }\n\n                    methodSelect.addEventListener('change', function () {\n                        resetToMethod(block);\n                    });\n\n                    grindInput.addEventListener('input', function () {\n                        updateBlock(block);\n                    });\n\n                    tempInput.addEventListener('input', function () {\n                        updateBlock(block);\n                    });\n\n                    if (resetButton) {\n                        resetButton.addEventListener('click', function () {\n                            resetToMethod(block);\n                        });\n                    }\n\n                    resetToMethod(block);\n                }\n\n                ready(function () {\n                    document.querySelectorAll('.bjc-brew-lab').forEach(initBrewLab);\n                });\n            })();\n        <\/script>\n\n        \n        <section id=\"bjc-brew-lab-5462\" class=\"bjc-brew-lab\" aria-label=\"Brew science simulator\">\n            <div class=\"bjc-brew-lab__inner\">\n\n                <div class=\"bjc-brew-lab__hero\">\n                    <div class=\"bjc-brew-lab__hero-copy\">\n                        <span class=\"bjc-brew-lab__eyebrow\">Brew Science Lab<\/span>\n\n                        <h2>Find your brew balance<\/h2>\n\n                        <p>\n                            Move the grind and temperature sliders to see how small brewing changes\n                            can affect acidity, sweetness, bitterness, body and clarity in your cup.\n                        <\/p>\n                    <\/div>\n\n                    <div class=\"bjc-brew-lab__mini-note\">\n                        <strong>For Colombian Arabica coffee<\/strong>\n                        <span>\n                            These values are starting points for medium \/ omni roast coffees.\n                            Every grinder, brewer and water is different, so adjust one variable at a time.\n                        <\/span>\n                    <\/div>\n                <\/div>\n\n                <div class=\"bjc-brew-lab__grid\">\n\n                    <div class=\"bjc-brew-lab__controls\">\n\n                        <div class=\"bjc-brew-lab__field\">\n                            <label for=\"bjc-brew-lab-5462-method\">Brewing method<\/label>\n\n                            <select id=\"bjc-brew-lab-5462-method\" class=\"bjc-brew-lab__method\">\n                                <option value=\"v60\">V60 \/ Pour Over<\/option>\n                                <option value=\"espresso\">Espresso<\/option>\n                                <option value=\"aeropress\">AeroPress<\/option>\n                                <option value=\"moka\">Moka Pot<\/option>\n                                <option value=\"frenchpress\">French Press<\/option>\n                                <option value=\"batch\">Batch Brew<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <div class=\"bjc-brew-lab__slider-card\">\n                            <div class=\"bjc-brew-lab__slider-head\">\n                                <label for=\"bjc-brew-lab-5462-grind\">Grind size<\/label>\n                                <strong class=\"bjc-brew-lab__grind-label\">Medium<\/strong>\n                            <\/div>\n\n                            <input\n                                id=\"bjc-brew-lab-5462-grind\"\n                                class=\"bjc-brew-lab__grind\"\n                                type=\"range\"\n                                min=\"0\"\n                                max=\"100\"\n                                value=\"55\"\n                                step=\"1\">\n\n                            <div class=\"bjc-brew-lab__scale\">\n                                <span>Fine<\/span>\n                                <span>Coarse<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"bjc-brew-lab__slider-card\">\n                            <div class=\"bjc-brew-lab__slider-head\">\n                                <label for=\"bjc-brew-lab-5462-temp\">Water temperature<\/label>\n                                <strong><span class=\"bjc-brew-lab__temp-value\">94<\/span>\u00b0C<\/strong>\n                            <\/div>\n\n                            <input\n                                id=\"bjc-brew-lab-5462-temp\"\n                                class=\"bjc-brew-lab__temp\"\n                                type=\"range\"\n                                min=\"80\"\n                                max=\"100\"\n                                value=\"94\"\n                                step=\"1\">\n\n                            <div class=\"bjc-brew-lab__scale\">\n                                <span>80\u00b0C<\/span>\n                                <span>100\u00b0C<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"bjc-brew-lab__target\">\n                            <span>Suggested starting point<\/span>\n                            <strong class=\"bjc-brew-lab__target-text\">Medium grind \u00b7 94\u00b0C<\/strong>\n                        <\/div>\n\n                        <button type=\"button\" class=\"bjc-brew-lab__reset\">\n                            Reset to method starting point\n                        <\/button>\n                    <\/div>\n\n                    <div class=\"bjc-brew-lab__results\">\n\n                        <div class=\"bjc-brew-lab__status-card\">\n                            <span class=\"bjc-brew-lab__status-kicker\">Extraction<\/span>\n\n                            <h3 class=\"bjc-brew-lab__status-title\">Balanced<\/h3>\n\n                            <p class=\"bjc-brew-lab__status-text\">\n                                This setting should produce a sweet, clean and balanced cup.\n                            <\/p>\n\n                            <div class=\"bjc-brew-lab__meter\" aria-hidden=\"true\">\n                                <div class=\"bjc-brew-lab__meter-zones\">\n                                    <span>Under<\/span>\n                                    <span>Balanced<\/span>\n                                    <span>Over<\/span>\n                                <\/div>\n\n                                <div class=\"bjc-brew-lab__meter-track\">\n                                    <div class=\"bjc-brew-lab__meter-marker\"><\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"bjc-brew-lab__bars\">\n                            <div class=\"bjc-brew-lab__bar\" data-sensor=\"acidity\">\n                                <div>\n                                    <strong>Acidity<\/strong>\n                                    <span class=\"bjc-brew-lab__bar-value\">Medium<\/span>\n                                <\/div>\n                                <div class=\"bjc-brew-lab__bar-track\">\n                                    <span><\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"bjc-brew-lab__bar\" data-sensor=\"sweetness\">\n                                <div>\n                                    <strong>Sweetness<\/strong>\n                                    <span class=\"bjc-brew-lab__bar-value\">High<\/span>\n                                <\/div>\n                                <div class=\"bjc-brew-lab__bar-track\">\n                                    <span><\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"bjc-brew-lab__bar\" data-sensor=\"bitterness\">\n                                <div>\n                                    <strong>Bitterness<\/strong>\n                                    <span class=\"bjc-brew-lab__bar-value\">Low<\/span>\n                                <\/div>\n                                <div class=\"bjc-brew-lab__bar-track\">\n                                    <span><\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"bjc-brew-lab__bar\" data-sensor=\"body\">\n                                <div>\n                                    <strong>Body<\/strong>\n                                    <span class=\"bjc-brew-lab__bar-value\">Medium<\/span>\n                                <\/div>\n                                <div class=\"bjc-brew-lab__bar-track\">\n                                    <span><\/span>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"bjc-brew-lab__bar\" data-sensor=\"clarity\">\n                                <div>\n                                    <strong>Clarity<\/strong>\n                                    <span class=\"bjc-brew-lab__bar-value\">High<\/span>\n                                <\/div>\n                                <div class=\"bjc-brew-lab__bar-track\">\n                                    <span><\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"bjc-brew-lab__tip\">\n                            <span>Brewing tip<\/span>\n                            <p class=\"bjc-brew-lab__tip-text\">\n                                This is a good starting point. Adjust one variable at a time and taste the difference.\n                            <\/p>\n                        <\/div>\n\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        \n        <\/div>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <section class=\"bjc-lab-section bjc-lab-section-soft\">\n    <div class=\"bjc-lab-wrap\">\n      <div class=\"bjc-lab-principles\">\n        <aside class=\"bjc-lab-principles-note\">\n          <h2>Three variables explain most cups.<\/h2>\n          <p>\n            You do not need to become a coffee technician to brew better. Start with grind,\n            water temperature and method. Keep the rest stable while you learn.\n          <\/p>\n        <\/aside>\n\n        <div class=\"bjc-lab-principles-grid\">\n          <article class=\"bjc-lab-principle\">\n            <div class=\"bjc-lab-principle-icon\">GR<\/div>\n            <div>\n              <h3>Grind size<\/h3>\n              <p>\n                Finer grind usually increases extraction and intensity. Coarser grind usually\n                reduces bitterness and makes the cup feel lighter.\n              <\/p>\n            <\/div>\n          <\/article>\n\n          <article class=\"bjc-lab-principle\">\n            <div class=\"bjc-lab-principle-icon\">\u00b0C<\/div>\n            <div>\n              <h3>Water temperature<\/h3>\n              <p>\n                Higher temperature can bring more sweetness and structure, but too much heat\n                may increase bitterness in some recipes.\n              <\/p>\n            <\/div>\n          <\/article>\n\n          <article class=\"bjc-lab-principle\">\n            <div class=\"bjc-lab-principle-icon\">BR<\/div>\n            <div>\n              <h3>Brewing method<\/h3>\n              <p>\n                Espresso, filter, moka pot, French press and AeroPress highlight different\n                parts of the same coffee. There is no single \u201ccorrect\u201d cup.\n              <\/p>\n            <\/div>\n          <\/article>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section id=\"bjc-lab-fix\" class=\"bjc-lab-section bjc-lab-section-dark\">\n    <div class=\"bjc-lab-wrap\">\n      <div class=\"bjc-lab-head\">\n        <div>\n          <span class=\"bjc-lab-eyebrow\">Quick troubleshooting<\/span>\n          <h2 class=\"bjc-lab-title\">Fix your next cup.<\/h2>\n        <\/div>\n\n        <p class=\"bjc-lab-description\">\n          Use these as first moves. Keep your dose and water amount stable, then adjust one thing.\n        <\/p>\n      <\/div>\n\n      <div class=\"bjc-lab-troubleshoot\">\n        <article class=\"bjc-lab-fix-card\">\n          <h3>Too sour?<\/h3>\n          <p>\n            Try a slightly finer grind, a longer contact time or a little more temperature.\n          <\/p>\n        <\/article>\n\n        <article class=\"bjc-lab-fix-card\">\n          <h3>Too bitter?<\/h3>\n          <p>\n            Try a slightly coarser grind, less contact time or a little less temperature.\n          <\/p>\n        <\/article>\n\n        <article class=\"bjc-lab-fix-card\">\n          <h3>Too weak?<\/h3>\n          <p>\n            Use a bit more coffee, slightly less water or grind a little finer.\n          <\/p>\n        <\/article>\n\n        <article class=\"bjc-lab-fix-card\">\n          <h3>Too heavy?<\/h3>\n          <p>\n            Try a cleaner method, lower agitation or a slightly coarser grind.\n          <\/p>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"bjc-lab-section bjc-lab-section-white\">\n    <div class=\"bjc-lab-wrap\">\n      <div class=\"bjc-lab-cta\">\n        <div>\n          <h2>Ready to brew?<\/h2>\n          <p>\n            Explore the current coffees in the shop, choose one that fits your taste,\n            and come back to the Coffee Lab when you want to adjust your recipe.\n          <\/p>\n        <\/div>\n\n        <a href=\"\/shop\/\" class=\"bjc-lab-btn\">\n          Explore coffees\n        <\/a>\n      <\/div>\n    <\/div>\n  <\/section>\n<\/section>\n\t\t<\/div>\n\t<\/div>\n<div class=\"grve-element grve-text\">\r\n\t\t\t\r\n\t\t<\/div>\r\n\t<\/div><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"Bean Jamming Coffee Lab Choose better. Brew clearer. Enjoy more. A practical space for curious home brewers. Find a Colombian coffee that fits your taste, then learn how grind size, water temperature and brewing method change the cup. Start with the quiz Find your brew balance Lab note One cup, one adjustment. Good brewing is [...]","protected":false},"author":8,"featured_media":2040,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"iawp_total_views":135,"footnotes":""},"class_list":["post-3155","page","type-page","status-publish","has-post-thumbnail","hentry","grve-entry-item"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Coffee Lab: Quiz &amp; Brewing Guide | Bean Jamming Coffee<\/title>\n<meta name=\"description\" content=\"Find your Colombian coffee and improve your brew with our Coffee Lab. Use the coffee quiz and brewing guide for grind size, temperature and brewing methods.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Coffee Lab: Quiz &amp; Brewing Guide | Bean Jamming Coffee\" \/>\n<meta property=\"og:description\" content=\"Find your Colombian coffee and improve your brew with our Coffee Lab. Use the coffee quiz and brewing guide for grind size, temperature and brewing methods.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beanjammingcoffee.com\/de\/coffee-lab\/\" \/>\n<meta property=\"og:site_name\" content=\"Bean Jamming Coffee\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-10T00:28:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2024\/04\/clint-mckoy-h28p96ICizo-unsplash.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1281\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/coffee-lab\\\/\",\"url\":\"https:\\\/\\\/beanjammingcoffee.com\\\/coffee-lab\\\/\",\"name\":\"Coffee Lab: Quiz & Brewing Guide | Bean Jamming Coffee\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/coffee-lab\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/coffee-lab\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/beanjammingcoffee.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/clint-mckoy-h28p96ICizo-unsplash.jpg\",\"datePublished\":\"2026-06-09T22:10:03+00:00\",\"dateModified\":\"2026-06-10T00:28:50+00:00\",\"description\":\"Find your Colombian coffee and improve your brew with our Coffee Lab. Use the coffee quiz and brewing guide for grind size, temperature and brewing methods.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/coffee-lab\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/beanjammingcoffee.com\\\/coffee-lab\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/coffee-lab\\\/#primaryimage\",\"url\":\"https:\\\/\\\/beanjammingcoffee.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/clint-mckoy-h28p96ICizo-unsplash.jpg\",\"contentUrl\":\"https:\\\/\\\/beanjammingcoffee.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/clint-mckoy-h28p96ICizo-unsplash.jpg\",\"width\":1920,\"height\":1281},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/coffee-lab\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/beanjammingcoffee.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Coffee Lab\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/#website\",\"url\":\"https:\\\/\\\/beanjammingcoffee.com\\\/\",\"name\":\"Bean Jamming Coffee\",\"description\":\"Coffee Roasters in Vienna\",\"publisher\":{\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/beanjammingcoffee.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/#organization\",\"name\":\"Bean Jamming Coffee\",\"url\":\"https:\\\/\\\/beanjammingcoffee.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/beanjammingcoffee.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/logo-bean-jamming_dark-green.svg\",\"contentUrl\":\"https:\\\/\\\/beanjammingcoffee.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/logo-bean-jamming_dark-green.svg\",\"width\":500,\"height\":174,\"caption\":\"Bean Jamming Coffee\"},\"image\":{\"@id\":\"https:\\\/\\\/beanjammingcoffee.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/beanjammingcoffee\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Coffee Lab: Quiz & Brewing Guide | Bean Jamming Coffee","description":"Find your Colombian coffee and improve your brew with our Coffee Lab. Use the coffee quiz and brewing guide for grind size, temperature and brewing methods.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"de_DE","og_type":"article","og_title":"Coffee Lab: Quiz & Brewing Guide | Bean Jamming Coffee","og_description":"Find your Colombian coffee and improve your brew with our Coffee Lab. Use the coffee quiz and brewing guide for grind size, temperature and brewing methods.","og_url":"https:\/\/beanjammingcoffee.com\/de\/coffee-lab\/","og_site_name":"Bean Jamming Coffee","article_modified_time":"2026-06-10T00:28:50+00:00","og_image":[{"width":1920,"height":1281,"url":"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2024\/04\/clint-mckoy-h28p96ICizo-unsplash.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/beanjammingcoffee.com\/coffee-lab\/","url":"https:\/\/beanjammingcoffee.com\/coffee-lab\/","name":"Coffee Lab: Quiz & Brewing Guide | Bean Jamming Coffee","isPartOf":{"@id":"https:\/\/beanjammingcoffee.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beanjammingcoffee.com\/coffee-lab\/#primaryimage"},"image":{"@id":"https:\/\/beanjammingcoffee.com\/coffee-lab\/#primaryimage"},"thumbnailUrl":"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2024\/04\/clint-mckoy-h28p96ICizo-unsplash.jpg","datePublished":"2026-06-09T22:10:03+00:00","dateModified":"2026-06-10T00:28:50+00:00","description":"Find your Colombian coffee and improve your brew with our Coffee Lab. Use the coffee quiz and brewing guide for grind size, temperature and brewing methods.","breadcrumb":{"@id":"https:\/\/beanjammingcoffee.com\/coffee-lab\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beanjammingcoffee.com\/coffee-lab\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/beanjammingcoffee.com\/coffee-lab\/#primaryimage","url":"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2024\/04\/clint-mckoy-h28p96ICizo-unsplash.jpg","contentUrl":"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2024\/04\/clint-mckoy-h28p96ICizo-unsplash.jpg","width":1920,"height":1281},{"@type":"BreadcrumbList","@id":"https:\/\/beanjammingcoffee.com\/coffee-lab\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beanjammingcoffee.com\/"},{"@type":"ListItem","position":2,"name":"Coffee Lab"}]},{"@type":"WebSite","@id":"https:\/\/beanjammingcoffee.com\/#website","url":"https:\/\/beanjammingcoffee.com\/","name":"Bean Jamming Coffee","description":"Coffee Roasters in Vienna","publisher":{"@id":"https:\/\/beanjammingcoffee.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beanjammingcoffee.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/beanjammingcoffee.com\/#organization","name":"Bean Jamming Coffee","url":"https:\/\/beanjammingcoffee.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/beanjammingcoffee.com\/#\/schema\/logo\/image\/","url":"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2026\/03\/logo-bean-jamming_dark-green.svg","contentUrl":"https:\/\/beanjammingcoffee.com\/wp-content\/uploads\/2026\/03\/logo-bean-jamming_dark-green.svg","width":500,"height":174,"caption":"Bean Jamming Coffee"},"image":{"@id":"https:\/\/beanjammingcoffee.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/beanjammingcoffee\/"]}]}},"_links":{"self":[{"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/pages\/3155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/comments?post=3155"}],"version-history":[{"count":5,"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/pages\/3155\/revisions"}],"predecessor-version":[{"id":3158,"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/pages\/3155\/revisions\/3158"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/media\/2040"}],"wp:attachment":[{"href":"https:\/\/beanjammingcoffee.com\/de\/wp-json\/wp\/v2\/media?parent=3155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}