<div class="oe_structure" id="oe_structure_lp_top"></div><script type="application/ld+json">{
 "@context": "https://schema.org",
 "@graph": [
  {
   "@type": "Product",
   "name": "Karnataka Spicy Chilli Powder",
   "sku": "MS-10007",
   "url": "https://www.millerstores.com/karnataka-spicy-chilli-powder",
   "image": "https://www.millerstores.com/web/image/product.template/10007/image_1024",
   "description": "Very hot, deep red Karnataka chilli powder bought direct from farmers and ground in front of you. No added colour or preservatives, lab-tested. 100 g, 250 g, 500 g.",
   "brand": {
    "@type": "Brand",
    "name": "Miller Stores"
   },
   "offers": {
    "@type": "AggregateOffer",
    "priceCurrency": "INR",
    "lowPrice": "85.06",
    "highPrice": "389.56",
    "offerCount": 3,
    "availability": "https://schema.org/InStock",
    "url": "https://www.millerstores.com/karnataka-spicy-chilli-powder",
    "seller": {
     "@id": "https://www.millerstores.com/#organization"
    }
   }
  },
  {
   "@type": "BreadcrumbList",
   "itemListElement": [
    {
     "@type": "ListItem",
     "position": 1,
     "name": "Home",
     "item": "https://www.millerstores.com/"
    },
    {
     "@type": "ListItem",
     "position": 2,
     "name": "Shop",
     "item": "https://www.millerstores.com/shop"
    },
    {
     "@type": "ListItem",
     "position": 3,
     "name": "Karnataka Spicy Chilli Powder",
     "item": "https://www.millerstores.com/karnataka-spicy-chilli-powder"
    }
   ]
  },
  {
   "@type": "FAQPage",
   "mainEntity": [
    {
     "@type": "Question",
     "name": "How hot is it?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "Very hot. Start with half the amount you use of a regular chilli powder. For colour with less heat, mix in some Kashmiri."
     }
    },
    {
     "@type": "Question",
     "name": "Is anything added?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "No. It is only dried Karnataka chillies, ground. No added colour, salt, oil or preservatives."
     }
    },
    {
     "@type": "Question",
     "name": "How is it tested?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "Random batches are lab-tested before they go on sale. Ask in store to see the latest report."
     }
    },
    {
     "@type": "Question",
     "name": "Is the stem removed from the chillies?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "Yes. The stems are removed by machine before grinding, which takes out 70–80% of the stem before the chillies are powdered."
     }
    },
    {
     "@type": "Question",
     "name": "Can I watch it being ground?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "Yes. Order in store and we grind it in front of you."
     }
    },
    {
     "@type": "Question",
     "name": "Why does it clump?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "Because there is no anti-caking agent in it. Freshly ground chilli carries its own oil and absorbs humidity. Break it up with a dry spoon - it is a sign of what is absent."
     }
    },
    {
     "@type": "Question",
     "name": "How long does it keep, and how should I store it?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "Best within three to four months, in an airtight, opaque container in a cool, dark cupboard. Avoid the fridge: a cold jar taken in and out of a warm kitchen gathers moisture and the powder cakes. It stays safe longer, but the aroma fades before the colour does."
     }
    },
    {
     "@type": "Question",
     "name": "Can I bring my own chillies to be milled?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "No. Only Miller Stores' own chillies go through our mill, so nothing from outside can cross-contaminate what you buy."
     }
    },
    {
     "@type": "Question",
     "name": "What do I cook with it?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "Chammanthi, fry masalas and gravies where you want real heat. For a deep red colour without the burn, blend it with Kashmiri."
     }
    },
    {
     "@type": "Question",
     "name": "What is it called in other languages?",
     "acceptedAnswer": {
      "@type": "Answer",
      "text": "Mulaku podi (Malayalam), Menasina pudi (Kannada), Milagai thool (Tamil), Kaaram podi (Telugu) and Lal mirch powder (Hindi)."
     }
    }
   ]
  }
 ]
}</script><style>#lp-host x-dc{display:none!important;}#lp-host [style*="grid-template-columns"]>*{min-width:0;}#lp-host section[id]{scroll-margin-top:96px;}#lp-host [style*="position:relative"]>image-slot:not([style]){position:absolute;inset:0;width:100%;height:100%;}</style><div id="lp-host"><div id="kcdesk">

 

<x-dc>
<helmet>

<style>/* vietnamese */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37492") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37493") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37494") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37492") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37493") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37494") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37492") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37493") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37494") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37472") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37473") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37472") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37473") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37472") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37473") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37474") format('woff');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37475") format('woff');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37476") format('woff');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37477") format('woff');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37478") format('woff');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37479") format('woff');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<style> #kcdesk {margin:0;background:#F4EADF;color:#1F0F0B;font-family:'Instrument Sans',sans-serif;-webkit-font-smoothing:antialiased}
 #kcdesk a {color:#A31C12}a:hover{color:#6E0F08}
</style>
</helmet>
<div style="max-width:1440px;margin:0 auto">

  <section id="buy" style="display:grid;grid-template-columns:1.05fr 1fr;gap:72px;padding:64px 72px 120px;align-items:center">
    <div style="aspect-ratio:4/5;position:relative"><img src="https://www.millerstores.com/web/image/product.template/10007/image_1024" alt="Miller Stores Karnataka spicy chilli powder" fetchpriority="high" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px" loading="lazy"></div>
    <div style="display:flex;flex-direction:column;gap:28px">
      <div style="font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:#A31C12;font-weight:600">From Karnataka farms · Ground in store</div>
      <h1 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:900;font-size:104px;line-height:0.9;text-transform:uppercase;color:#A31C12"><span style="position:relative;display:inline-block">Karnataka<span style="position:absolute;top:-0.42em;right:-0.3em;transform:rotate(-9deg);font-size:0.3em;font-weight:900;letter-spacing:0.08em;line-height:1;padding:0.12em 0.35em;border:3px solid #1F0F0B;border-radius:4px;color:#1F0F0B;background:#F4EADF;box-shadow:0 0 0 2px #F4EADF inset">Spicy</span></span><br>Chilli Powder</h1>
      <p style="margin:0;font-size:19px;line-height:1.55;max-width:34em;text-wrap:pretty">Very hot, deep red, and nothing else. Whole dried chillies bought straight from Karnataka farmers, ground in front of you. No added colour, no preservatives, lab-tested.</p>
      <div style="display:grid;grid-template-columns:auto 1fr;gap:12px 20px;align-items:center;max-width:420px">
        <div style="font-size:14px;font-weight:600">Heat</div>
        <div style="display:flex;gap:6px"><sc-for list="{{ heroHeat }}" as="s" hint-placeholder-count="5"><sc-if value="{{ s.on }}"><div style="flex:1;height:10px;border-radius:2px;background:#A31C12"></div></sc-if><sc-if value="{{ s.off }}"><div style="flex:1;height:10px;border-radius:2px;background:#E0CFBF"></div></sc-if></sc-for></div>
        <div style="font-size:14px;font-weight:600">Colour</div>
        <div style="display:flex;gap:6px"><sc-for list="{{ heroColour }}" as="s" hint-placeholder-count="5"><sc-if value="{{ s.on }}"><div style="flex:1;height:10px;border-radius:2px;background:#C8341F"></div></sc-if><sc-if value="{{ s.off }}"><div style="flex:1;height:10px;border-radius:2px;background:#E0CFBF"></div></sc-if></sc-for></div>
      </div>
      <div style="display:flex;flex-direction:column;gap:12px">
        <div style="font-size:14px;font-weight:600">Size</div>
        <div style="display:flex;gap:12px">
          <sc-for list="{{ sizes }}" as="z" hint-placeholder-count="3">
            <sc-if value="{{ z.active }}"><button sc-camel-on-click="{{ z.pick }}" style="flex:1;padding:16px 12px;border:2px solid #1F0F0B;background:#1F0F0B;color:#F4EADF;border-radius:6px;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:4px;align-items:center"><span style="font-weight:600;font-size:17px">{{ z.label }}</span><span style="font-size:14px">₹{{ z.price }}</span></button></sc-if>
            <sc-if value="{{ z.inactive }}"><button sc-camel-on-click="{{ z.pick }}" style="flex:1;padding:16px 12px;border:2px solid #D2BCA8;background:transparent;color:#1F0F0B;border-radius:6px;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:4px;align-items:center" style-hover="border-color:#1F0F0B"><span style="font-weight:600;font-size:17px">{{ z.label }}</span><span style="font-size:14px">₹{{ z.price }}</span></button></sc-if>
          </sc-for>
        </div>
      </div>
      <div style="display:flex;gap:12px;align-items:stretch">
        <div style="display:flex;align-items:center;border:2px solid #D2BCA8;border-radius:6px">
          <button sc-camel-on-click="{{ dec }}" style="width:48px;height:56px;border:0;background:transparent;font-size:22px;cursor:pointer">−</button>
          <div style="width:32px;text-align:center;font-weight:600">{{ qty }}</div>
          <button sc-camel-on-click="{{ inc }}" style="width:48px;height:56px;border:0;background:transparent;font-size:22px;cursor:pointer">+</button>
        </div>
        <button sc-camel-on-click="{{ addMain }}" style="flex:1;border:0;border-radius:6px;background:#A31C12;color:#FFF6EE;font:inherit;font-weight:600;font-size:17px;cursor:pointer" style-hover="background:#850F07">{{ addLabel }}</button><button sc-camel-on-click="{{ buyNow }}" style="flex:0 0 auto;min-height:56px;padding:0 28px;border:2px solid #1F0F0B;border-radius:6px;background:transparent;color:#1F0F0B;font:inherit;font-weight:600;font-size:17px;cursor:pointer">{{ buyLabel }}</button>
      </div>
      <div style="font-size:14px;color:#5E4A40">Ground fresh when you order in store · Sealed same day</div>
    </div>
  </section>

  <section id="purity" style="background:#1F0F0B;color:#F4EADF;padding:120px 72px">
    <div style="display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:start">
      <div style="display:flex;flex-direction:column;gap:24px">
        <div style="font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:#F07A5A;font-weight:600">The water test</div>
        <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:72px;line-height:0.95;text-transform:uppercase">Our red comes from the chilli. Not a packet.</h2>
        <p style="margin:0;font-size:18px;line-height:1.6;color:#D9C7B8;max-width:32em;text-wrap:pretty">Some powders get their colour from added dye or fillers. Check any brand at home: sprinkle a spoon on a glass of water.</p>
      </div>
      <div style="display:grid;grid-template-columns:1fr 1fr;gap:20px">
        <div style="border:1px solid #4A2E25;border-radius:6px;padding:28px;display:flex;flex-direction:column;gap:16px">
          <div style="font-size:13px;letter-spacing:0.1em;text-transform:uppercase;color:#A89284">Coloured powder</div>
          <div style="font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:32px;line-height:1">Red streaks spread fast</div>
          <p style="margin:0;font-size:16px;line-height:1.55;color:#D9C7B8">Dye bleeds into the water within seconds. Grit sinks to the bottom.</p>
        </div>
        <div style="background:#A31C12;border-radius:6px;padding:28px;display:flex;flex-direction:column;gap:16px">
          <div style="font-size:13px;letter-spacing:0.1em;text-transform:uppercase;color:#FFD9CC">Miller Stores</div>
          <div style="font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:32px;line-height:1">Floats, settles slowly</div>
          <p style="margin:0;font-size:16px;line-height:1.55;color:#FFE9E1">Water tints gently over time. No streaks, no grit.</p>
        </div>
      </div>
    </div>
  </section>

  <section style="padding:120px 72px;display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center">
    <div style="aspect-ratio:4/3;position:relative"><img src="https://www.millerstores.com/web/image/37521" alt="Miller Stores staff pouring whole dried red chillies into the grinder, with fresh chilli powder in the bowl below" loading="lazy" decoding="async" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px"></div>
    <div style="display:flex;flex-direction:column;gap:24px">
      <div style="font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:#A31C12;font-weight:600">Ground in front of you</div>
      <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">See the whole chillies go in.</h2>
      <p style="margin:0;font-size:18px;line-height:1.6;max-width:32em;text-wrap:pretty">Nothing happens out of sight. You watch the dried chillies go into the grinder, and the powder that comes out goes into your pack.</p>
    </div>
  </section>

  <section style="padding:0 72px 120px">
    <h2 style="margin:0 0 40px;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">Ours vs. typical packaged powder</h2>
    <div style="border-top:2px solid #1F0F0B">
      <div style="display:grid;grid-template-columns:1.2fr 1fr 1fr;padding:18px 0;border-bottom:1px solid #D2BCA8;font-size:13px;letter-spacing:0.1em;text-transform:uppercase;font-weight:600">
        <div></div><div style="color:#A31C12">Miller Stores</div><div style="color:#5E4A40">Typical brand</div>
      </div>
      <sc-for list="{{ compare }}" as="r" hint-placeholder-count="6">
        <div style="display:grid;grid-template-columns:1.2fr 1fr 1fr;padding:22px 0;border-bottom:1px solid #D2BCA8;font-size:18px">
          <div style="font-weight:600">{{ r.k }}</div><div>{{ r.us }}</div><div style="color:#5E4A40">{{ r.them }}</div>
        </div>
      </sc-for>
    </div>
  </section>

  <section style="background:#EADBCB;padding:120px 72px;display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center">
    <div style="display:flex;flex-direction:column;gap:24px">
      <div style="font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:#A31C12;font-weight:600">Farm to grinder</div>
      <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">Bought direct. Ground in front of you.</h2>
      <p style="margin:0;font-size:18px;line-height:1.6;max-width:32em;text-wrap:pretty">We buy whole dried chillies straight from Karnataka farmers, with no traders in between, and grind them in front of you at our stores. Random batches are lab-tested.</p>
    </div>
    <div style="display:grid;grid-template-columns:1fr 1fr;gap:20px">
      <div style="aspect-ratio:1;position:relative"><img src="https://www.millerstores.com/web/image/37522" alt="Farmers standing in a chilli field" loading="lazy" decoding="async" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px"></div>
      <div style="aspect-ratio:1;position:relative"><img src="https://www.millerstores.com/web/image/37523" alt="A ripe red chilli held on the plant in the field" loading="lazy" decoding="async" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px"></div>
    </div>
  </section>

  <section id="range" style="padding:120px 72px">
    <div style="display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:48px">
      <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">Pick your heat</h2>
      <p style="margin:0;font-size:17px;color:#5E4A40;max-width:26em">Three chillies, ground the same way. Mix them to get the heat and colour you like.</p>
    </div>
    <div style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px">
      <sc-for list="{{ range }}" as="c" hint-placeholder-count="3">
        <div style="position:relative;cursor:pointer;transition:border-color .15s;border:1px solid #D2BCA8;border-radius:6px;padding:20px;display:flex;flex-direction:column;gap:18px;background:#FBF4EC" style-hover="border-color:#A31C12"><a sc-camel-href="{{ c.href }}" aria-label="{{ c.linkLabel }}" style="position:absolute;inset:0;z-index:1;border-radius:6px"></a>
          <div style="aspect-ratio:4/3;position:relative;overflow:hidden;border-radius:4px"><img sc-camel-src="{{ c.img }}" alt="{{ c.alt }}" loading="eager" decoding="async" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover"></div>
          <div style="display:flex;justify-content:space-between;align-items:baseline;gap:12px">
            <div style="position:relative;display:inline-block;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:36px;text-transform:uppercase;line-height:1">{{ c.name }}<sc-if value="{{ c.current }}"><span style="position:absolute;top:-0.55em;right:-0.9em;transform:rotate(-9deg);font-size:0.4em;font-weight:900;letter-spacing:0.08em;padding:0.15em 0.35em;border:2px solid #A31C12;border-radius:3px;color:#A31C12;background:#FBF4EC">{{ c.stamp }}</span></sc-if></div>
            <sc-if value="{{ c.current }}"><div style="font-size:12px;letter-spacing:0.08em;text-transform:uppercase;color:#A31C12;font-weight:600">This page</div></sc-if>
          </div>
          <div style="font-size:16px;color:#5E4A40">{{ c.note }}</div>
          <div style="display:grid;grid-template-columns:64px 1fr;gap:10px 14px;align-items:center">
            <div style="font-size:13px;font-weight:600">Heat</div>
            <div style="display:flex;gap:4px"><sc-for list="{{ c.heat }}" as="s"><sc-if value="{{ s.on }}"><div style="flex:1;height:8px;border-radius:2px;background:#A31C12"></div></sc-if><sc-if value="{{ s.off }}"><div style="flex:1;height:8px;border-radius:2px;background:#E0CFBF"></div></sc-if></sc-for></div>
            <div style="font-size:13px;font-weight:600">Colour</div>
            <div style="display:flex;gap:4px"><sc-for list="{{ c.colour }}" as="s"><sc-if value="{{ s.on }}"><div style="flex:1;height:8px;border-radius:2px;background:#C8341F"></div></sc-if><sc-if value="{{ s.off }}"><div style="flex:1;height:8px;border-radius:2px;background:#E0CFBF"></div></sc-if></sc-for></div>
          </div>
          <div style="display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:8px">
            <div style="font-size:15px">100 g · <strong>₹{{ c.priceText }}</strong></div>
            <button sc-camel-on-click="{{ c.add }}" style="position:relative;z-index:2;border:0;border-radius:999px;background:#1F0F0B;color:#F4EADF;padding:12px 20px;font:inherit;font-weight:600;cursor:pointer" style-hover="background:#A31C12">{{ c.btn }}</button>
          </div>
        </div>
      </sc-for>
    </div>
  </section>

  <section id="faq" style="padding:0 72px 120px;display:grid;grid-template-columns:1fr 1.6fr;gap:72px">
    <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">Questions</h2>
    <div style="border-top:2px solid #1F0F0B">
      <sc-for list="{{ faqs }}" as="f" hint-placeholder-count="5">
        <div style="border-bottom:1px solid #D2BCA8">
          <button sc-camel-on-click="{{ f.toggle }}" style="width:100%;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 0;border:0;background:transparent;font:inherit;font-size:19px;font-weight:600;text-align:left;cursor:pointer;color:#1F0F0B"><span>{{ f.q }}</span><span style="font-size:24px;color:#A31C12">{{ f.sign }}</span></button>
          <sc-if value="{{ f.open }}"><p style="margin:0 0 22px;font-size:17px;line-height:1.6;color:#5E4A40;max-width:40em">{{ f.a }}</p></sc-if>
        </div>
      </sc-for>
    </div>
  </section>

  <footer style="background:#A31C12;color:#FFF6EE;padding:72px;display:flex;justify-content:space-between;align-items:end;gap:40px">
    <div style="font-family:'Big Shoulders Display',sans-serif;font-weight:900;font-size:88px;line-height:0.9;text-transform:uppercase">Miller<br>Stores</div>
    <div style="display:flex;flex-direction:column;gap:8px;font-size:16px;text-align:right">
      <div>Ground in front of you · Karnataka chillies</div>
      <div>Visit the store or call to order</div>
    </div>
  </footer>
</div>
</x-dc>
<script type="text/x-dc" data-dc-script="" data-props="{&quot;price100&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:60,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;},&quot;price250&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:140,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;},&quot;price500&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:260,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;},&quot;priceKashmiri&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:70,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;},&quot;priceGuntur&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:50,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;}}">
class Component extends DCLogic {
  state = { size: '250', qty: 1, cart: {}, faq: -1, added: '', busy: '', err: '', buying: false };
  bars(n) { return [1,2,3,4,5].map(i => ({ on: i <= n, off: i > n })); }
  pids = {"karnataka-100": 3455, "karnataka-250": 3457, "karnataka-500": 3456, "kashmiri-100": 3399, "guntur-100": 4806};
  money(n) { const v = Math.round(n * 100) / 100; return Number.isInteger(v) ? String(v) : v.toFixed(2); }

  cartLines = {};
  cartReady = false;
  cartBoot() {
    if (this._cartBoot) return;
    this._cartBoot = true;
    setTimeout(() => this.syncCart(), 0);
    window.addEventListener('pageshow', e => { if (e.persisted) this.syncCart(); });
  }
  syncCart() {
    fetch('/shop/cart', { credentials: 'same-origin' }).then(r => r.text()).then(h => {
      const d = new DOMParser().parseFromString(h, 'text/html'), m = {};
      d.querySelectorAll('input.js_quantity[data-product-id]').forEach(i => {
        const p = i.getAttribute('data-product-id');
        (m[p] = m[p] || []).push({ line: parseInt(i.getAttribute('data-line-id'), 10), qty: parseFloat(i.value) || 0 });
      });
      this.cartLines = m; this.cartReady = true; this.setState({ rev: Date.now() });
    }).catch(() => { this.cartReady = true; this.setState({ rev: Date.now() }); });
  }
  inCart(pid) { return (this.cartLines[pid] || []).reduce((a, l) => a + l.qty, 0); }
  cartPost(params) {
    return fetch('/shop/cart/update_json', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json', 'X-CSRFToken': (window.odoo && odoo.csrf_token) || '' },
      body: JSON.stringify({ jsonrpc: '2.0', method: 'call', params })
    }).then(r => r.json()).then(res => {
      const o = res && res.result;
      if (!o || res.error) throw new Error('cart');
      if (typeof o.cart_quantity === 'number') {
        document.querySelectorAll('.my_cart_quantity').forEach(el => {
          el.textContent = String(o.cart_quantity);
          const w = el.closest('.o_wsale_my_cart, [class*="my_cart"]');
          if (w && o.cart_quantity) w.classList.remove('d-none');
        });
      }
      return o;
    });
  }
  step(pid, delta) {
    if (!pid || this._busy) return null;
    if (delta < 0 && !this.inCart(pid)) return null;
    const ls = this.cartLines[pid] || [];
    const t = delta > 0 ? ls[0] : ls.slice().reverse().find(l => l.qty > 0);
    const params = { product_id: pid, add_qty: delta };
    if (t) params.line_id = t.line;
    this._busy = true;
    this.setState({ busy: String(pid), err: '' });
    return this.cartPost(params).then(o => {
      const lid = o.line_id || (t && t.line);
      let arr = (this.cartLines[pid] || []).slice();
      if (lid && typeof o.quantity === 'number') {
        const i = arr.findIndex(l => l.line === lid);
        if (i >= 0) arr[i] = { line: lid, qty: o.quantity }; else arr.push({ line: lid, qty: o.quantity });
      }
      this.cartLines = { ...this.cartLines, [pid]: arr.filter(l => l.qty > 0) };
      this._busy = false;
      this.setState({ busy: '', added: delta > 0 ? String(pid) : '' });
      clearTimeout(this._at); this._at = setTimeout(() => this.setState({ added: '' }), 1600);
      return true;
    }).catch(() => {
      this._busy = false;
      this.setState({ busy: '', err: String(pid) });
      clearTimeout(this._et); this._et = setTimeout(() => this.setState({ err: '' }), 2400);
      return false;
    });
  }
  buy(pid) {
    const go = () => { this.setState({ buying: true }); window.location.href = '/shop/checkout?express=1'; };
    if (this.inCart(pid)) { go(); return; }
    const p = this.step(pid, 1);
    if (p) p.then(ok => { if (ok) go(); });
  }
  renderVals() {
    const P = this.props;
    const prices = { '100': 85.06, '250': 221.56, '500': 389.56 };
    const s = this.state;
    const items = Object.values(s.cart);
    const mainKey = 'karnataka-' + s.size;
    const pidSel = this.pids[mainKey]; const n = this.inCart(pidSel); this.cartBoot();
    const range = [{"id": "karnataka", "name": "Karnataka", "note": "Very hot, deep red colour", "h": 5, "c": 4, "price": 85.06, "stamp": "Spicy", "url": "/karnataka-spicy-chilli-powder", "current": true, "href": "#buy", "linkLabel": "Choose a size of Karnataka chilli powder"}, {"id": "kashmiri", "name": "Kashmiri", "note": "Very low heat, bright red colour", "h": 1, "c": 5, "price": 199.5, "stamp": "Mild", "url": "/kashmiri-chilli-powder", "current": false, "href": "/kashmiri-chilli-powder", "linkLabel": "View Kashmiri chilli powder"}, {"id": "guntur", "name": "Guntur", "note": "Everyday heat, lighter colour", "h": 3, "c": 2, "price": 73.5, "stamp": "Hot", "url": "/guntur-chilli-powder", "current": false, "href": "/guntur-chilli-powder", "linkLabel": "View Guntur chilli powder"}].map(c => {
      const key = c.id + '-100';
      return { ...c, img: ({ karnataka: '/web/image/product.template/10007/image_512', kashmiri: '/web/image/product.template/9974/image_512', guntur: '/web/image/product.template/10085/image_512' })[c.id], alt: c.name + ' chilli powder', priceText: this.money(c.price), slot: 'chilli-range-' + c.id, ph: 'Drop ' + c.name + ' chilli photo', heat: this.bars(c.h), colour: this.bars(c.c),
        btn: s.err === String(this.pids[key]) ? 'Retry' : s.busy === String(this.pids[key]) ? 'Adding…' : this.inCart(this.pids[key]) ? 'Add (' + this.inCart(this.pids[key]) + ' in cart)' : 'Add', add: () => this.step(this.pids[key], 1) };
    });
    const faqs = [["How hot is it?", "Very hot. Start with half the amount you use of a regular chilli powder. For colour with less heat, mix in some Kashmiri."], ["Is anything added?", "No. It is only dried Karnataka chillies, ground. No added colour, salt, oil or preservatives."], ["How is it tested?", "Random batches are lab-tested before they go on sale. Ask in store to see the latest report."], ["Is the stem removed from the chillies?", "Yes. The stems are removed by machine before grinding, which takes out 70–80% of the stem before the chillies are powdered."], ["Can I watch it being ground?", "Yes. Order in store and we grind it in front of you."], ["Why does it clump?", "Because there is no anti-caking agent in it. Freshly ground chilli carries its own oil and absorbs humidity. Break it up with a dry spoon - it is a sign of what is absent."], ["How long does it keep, and how should I store it?", "Best within three to four months, in an airtight, opaque container in a cool, dark cupboard. Avoid the fridge: a cold jar taken in and out of a warm kitchen gathers moisture and the powder cakes. It stays safe longer, but the aroma fades before the colour does."], ["Can I bring my own chillies to be milled?", "No. Only Miller Stores' own chillies go through our mill, so nothing from outside can cross-contaminate what you buy."], ["What do I cook with it?", "Chammanthi, fry masalas and gravies where you want real heat. For a deep red colour without the burn, blend it with Kashmiri."], ["What is it called in other languages?", "Mulaku podi (Malayalam), Menasina pudi (Kannada), Milagai thool (Tamil), Kaaram podi (Telugu) and Lal mirch powder (Hindi)."]].map(([q, a], i) => ({ q, a, open: s.faq === i, sign: s.faq === i ? '−' : '+', toggle: () => this.setState({ faq: s.faq === i ? -1 : i }) }));
    return {
      cartCount: items.reduce((a, b) => a + b.n, 0),
      cartTotal: items.reduce((a, b) => a + b.n * b.price, 0),
      heroHeat: this.bars(5), heroColour: this.bars(4),
      sizes: ['100', '250', '500'].map(z => ({ label: z + ' g', price: this.money(prices[z]), active: s.size === z, inactive: s.size !== z, pick: () => this.setState({ size: z }) })),
      qty: this.cartReady ? n : '–',
      inc: () => this.step(pidSel, 1),
      dec: () => this.step(pidSel, -1),
      addMain: () => n ? (window.location.href = '/shop/cart') : this.step(pidSel, 1),
      buyNow: () => this.buy(pidSel),
      buyLabel: s.buying ? 'Going to checkout…' : 'Buy now',
      addLabel: this.state.err === String(pidSel) ? 'Could not update cart. Try again' : this.state.busy === String(pidSel) ? 'Updating…' : n ? 'View cart (' + n + ')' : 'Add to cart · ₹' + this.money(prices[s.size]),
      compare: [{"k": "Colour from", "us": "The chilli itself", "them": "Often boosted with added colour"}, {"k": "Preservatives", "us": "None", "them": "Sometimes added"}, {"k": "Where it’s ground", "us": "In front of you", "them": "Out of sight, months earlier"}, {"k": "Sourcing", "us": "Direct from Karnataka farmers", "them": "Through traders, mixed origins"}, {"k": "Testing", "us": "Random batch lab testing", "them": "Rarely shared"}, {"k": "Heat", "us": "Very hot, consistent", "them": "Varies pack to pack"}],
      range, faqs
    };
  }
}
</script>

 

</div></div><template id="lp-desk-tpl"><div id="kcdesk">

 

<x-dc>
<helmet>

<style>/* vietnamese */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37492") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37493") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37494") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37492") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37493") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37494") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37492") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37493") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37494") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37472") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37473") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37472") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37473") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37472") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37473") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37474") format('woff');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37475") format('woff');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37476") format('woff');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37477") format('woff');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37478") format('woff');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("https://www.millerstores.com/web/content/37479") format('woff');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<style> #kcdesk {margin:0;background:#F4EADF;color:#1F0F0B;font-family:'Instrument Sans',sans-serif;-webkit-font-smoothing:antialiased}
 #kcdesk a {color:#A31C12}a:hover{color:#6E0F08}
</style>
</helmet>
<div style="max-width:1440px;margin:0 auto">

  <section id="buy" style="display:grid;grid-template-columns:1.05fr 1fr;gap:72px;padding:64px 72px 120px;align-items:center">
    <div style="aspect-ratio:4/5;position:relative"><img src="https://www.millerstores.com/web/image/product.template/10007/image_1024" alt="Miller Stores Karnataka spicy chilli powder" fetchpriority="high" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px" loading="lazy"></div>
    <div style="display:flex;flex-direction:column;gap:28px">
      <div style="font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:#A31C12;font-weight:600">From Karnataka farms · Ground in store</div>
      <h1 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:900;font-size:104px;line-height:0.9;text-transform:uppercase;color:#A31C12"><span style="position:relative;display:inline-block">Karnataka<span style="position:absolute;top:-0.42em;right:-0.3em;transform:rotate(-9deg);font-size:0.3em;font-weight:900;letter-spacing:0.08em;line-height:1;padding:0.12em 0.35em;border:3px solid #1F0F0B;border-radius:4px;color:#1F0F0B;background:#F4EADF;box-shadow:0 0 0 2px #F4EADF inset">Spicy</span></span><br>Chilli Powder</h1>
      <p style="margin:0;font-size:19px;line-height:1.55;max-width:34em;text-wrap:pretty">Very hot, deep red, and nothing else. Whole dried chillies bought straight from Karnataka farmers, ground in front of you. No added colour, no preservatives, lab-tested.</p>
      <div style="display:grid;grid-template-columns:auto 1fr;gap:12px 20px;align-items:center;max-width:420px">
        <div style="font-size:14px;font-weight:600">Heat</div>
        <div style="display:flex;gap:6px"><sc-for list="{{ heroHeat }}" as="s" hint-placeholder-count="5"><sc-if value="{{ s.on }}"><div style="flex:1;height:10px;border-radius:2px;background:#A31C12"></div></sc-if><sc-if value="{{ s.off }}"><div style="flex:1;height:10px;border-radius:2px;background:#E0CFBF"></div></sc-if></sc-for></div>
        <div style="font-size:14px;font-weight:600">Colour</div>
        <div style="display:flex;gap:6px"><sc-for list="{{ heroColour }}" as="s" hint-placeholder-count="5"><sc-if value="{{ s.on }}"><div style="flex:1;height:10px;border-radius:2px;background:#C8341F"></div></sc-if><sc-if value="{{ s.off }}"><div style="flex:1;height:10px;border-radius:2px;background:#E0CFBF"></div></sc-if></sc-for></div>
      </div>
      <div style="display:flex;flex-direction:column;gap:12px">
        <div style="font-size:14px;font-weight:600">Size</div>
        <div style="display:flex;gap:12px">
          <sc-for list="{{ sizes }}" as="z" hint-placeholder-count="3">
            <sc-if value="{{ z.active }}"><button sc-camel-on-click="{{ z.pick }}" style="flex:1;padding:16px 12px;border:2px solid #1F0F0B;background:#1F0F0B;color:#F4EADF;border-radius:6px;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:4px;align-items:center"><span style="font-weight:600;font-size:17px">{{ z.label }}</span><span style="font-size:14px">₹{{ z.price }}</span></button></sc-if>
            <sc-if value="{{ z.inactive }}"><button sc-camel-on-click="{{ z.pick }}" style="flex:1;padding:16px 12px;border:2px solid #D2BCA8;background:transparent;color:#1F0F0B;border-radius:6px;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:4px;align-items:center" style-hover="border-color:#1F0F0B"><span style="font-weight:600;font-size:17px">{{ z.label }}</span><span style="font-size:14px">₹{{ z.price }}</span></button></sc-if>
          </sc-for>
        </div>
      </div>
      <div style="display:flex;gap:12px;align-items:stretch">
        <div style="display:flex;align-items:center;border:2px solid #D2BCA8;border-radius:6px">
          <button sc-camel-on-click="{{ dec }}" style="width:48px;height:56px;border:0;background:transparent;font-size:22px;cursor:pointer">−</button>
          <div style="width:32px;text-align:center;font-weight:600">{{ qty }}</div>
          <button sc-camel-on-click="{{ inc }}" style="width:48px;height:56px;border:0;background:transparent;font-size:22px;cursor:pointer">+</button>
        </div>
        <button sc-camel-on-click="{{ addMain }}" style="flex:1;border:0;border-radius:6px;background:#A31C12;color:#FFF6EE;font:inherit;font-weight:600;font-size:17px;cursor:pointer" style-hover="background:#850F07">{{ addLabel }}</button><button sc-camel-on-click="{{ buyNow }}" style="flex:0 0 auto;min-height:56px;padding:0 28px;border:2px solid #1F0F0B;border-radius:6px;background:transparent;color:#1F0F0B;font:inherit;font-weight:600;font-size:17px;cursor:pointer">{{ buyLabel }}</button>
      </div>
      <div style="font-size:14px;color:#5E4A40">Ground fresh when you order in store · Sealed same day</div>
    </div>
  </section>

  <section id="purity" style="background:#1F0F0B;color:#F4EADF;padding:120px 72px">
    <div style="display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:start">
      <div style="display:flex;flex-direction:column;gap:24px">
        <div style="font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:#F07A5A;font-weight:600">The water test</div>
        <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:72px;line-height:0.95;text-transform:uppercase">Our red comes from the chilli. Not a packet.</h2>
        <p style="margin:0;font-size:18px;line-height:1.6;color:#D9C7B8;max-width:32em;text-wrap:pretty">Some powders get their colour from added dye or fillers. Check any brand at home: sprinkle a spoon on a glass of water.</p>
      </div>
      <div style="display:grid;grid-template-columns:1fr 1fr;gap:20px">
        <div style="border:1px solid #4A2E25;border-radius:6px;padding:28px;display:flex;flex-direction:column;gap:16px">
          <div style="font-size:13px;letter-spacing:0.1em;text-transform:uppercase;color:#A89284">Coloured powder</div>
          <div style="font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:32px;line-height:1">Red streaks spread fast</div>
          <p style="margin:0;font-size:16px;line-height:1.55;color:#D9C7B8">Dye bleeds into the water within seconds. Grit sinks to the bottom.</p>
        </div>
        <div style="background:#A31C12;border-radius:6px;padding:28px;display:flex;flex-direction:column;gap:16px">
          <div style="font-size:13px;letter-spacing:0.1em;text-transform:uppercase;color:#FFD9CC">Miller Stores</div>
          <div style="font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:32px;line-height:1">Floats, settles slowly</div>
          <p style="margin:0;font-size:16px;line-height:1.55;color:#FFE9E1">Water tints gently over time. No streaks, no grit.</p>
        </div>
      </div>
    </div>
  </section>

  <section style="padding:120px 72px;display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center">
    <div style="aspect-ratio:4/3;position:relative"><img src="https://www.millerstores.com/web/image/37521" alt="Miller Stores staff pouring whole dried red chillies into the grinder, with fresh chilli powder in the bowl below" loading="lazy" decoding="async" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px"></div>
    <div style="display:flex;flex-direction:column;gap:24px">
      <div style="font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:#A31C12;font-weight:600">Ground in front of you</div>
      <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">See the whole chillies go in.</h2>
      <p style="margin:0;font-size:18px;line-height:1.6;max-width:32em;text-wrap:pretty">Nothing happens out of sight. You watch the dried chillies go into the grinder, and the powder that comes out goes into your pack.</p>
    </div>
  </section>

  <section style="padding:0 72px 120px">
    <h2 style="margin:0 0 40px;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">Ours vs. typical packaged powder</h2>
    <div style="border-top:2px solid #1F0F0B">
      <div style="display:grid;grid-template-columns:1.2fr 1fr 1fr;padding:18px 0;border-bottom:1px solid #D2BCA8;font-size:13px;letter-spacing:0.1em;text-transform:uppercase;font-weight:600">
        <div></div><div style="color:#A31C12">Miller Stores</div><div style="color:#5E4A40">Typical brand</div>
      </div>
      <sc-for list="{{ compare }}" as="r" hint-placeholder-count="6">
        <div style="display:grid;grid-template-columns:1.2fr 1fr 1fr;padding:22px 0;border-bottom:1px solid #D2BCA8;font-size:18px">
          <div style="font-weight:600">{{ r.k }}</div><div>{{ r.us }}</div><div style="color:#5E4A40">{{ r.them }}</div>
        </div>
      </sc-for>
    </div>
  </section>

  <section style="background:#EADBCB;padding:120px 72px;display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center">
    <div style="display:flex;flex-direction:column;gap:24px">
      <div style="font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:#A31C12;font-weight:600">Farm to grinder</div>
      <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">Bought direct. Ground in front of you.</h2>
      <p style="margin:0;font-size:18px;line-height:1.6;max-width:32em;text-wrap:pretty">We buy whole dried chillies straight from Karnataka farmers, with no traders in between, and grind them in front of you at our stores. Random batches are lab-tested.</p>
    </div>
    <div style="display:grid;grid-template-columns:1fr 1fr;gap:20px">
      <div style="aspect-ratio:1;position:relative"><img src="https://www.millerstores.com/web/image/37522" alt="Farmers standing in a chilli field" loading="lazy" decoding="async" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px"></div>
      <div style="aspect-ratio:1;position:relative"><img src="https://www.millerstores.com/web/image/37523" alt="A ripe red chilli held on the plant in the field" loading="lazy" decoding="async" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px"></div>
    </div>
  </section>

  <section id="range" style="padding:120px 72px">
    <div style="display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:48px">
      <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">Pick your heat</h2>
      <p style="margin:0;font-size:17px;color:#5E4A40;max-width:26em">Three chillies, ground the same way. Mix them to get the heat and colour you like.</p>
    </div>
    <div style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px">
      <sc-for list="{{ range }}" as="c" hint-placeholder-count="3">
        <div style="position:relative;cursor:pointer;transition:border-color .15s;border:1px solid #D2BCA8;border-radius:6px;padding:20px;display:flex;flex-direction:column;gap:18px;background:#FBF4EC" style-hover="border-color:#A31C12"><a sc-camel-href="{{ c.href }}" aria-label="{{ c.linkLabel }}" style="position:absolute;inset:0;z-index:1;border-radius:6px"></a>
          <div style="aspect-ratio:4/3;position:relative;overflow:hidden;border-radius:4px"><img sc-camel-src="{{ c.img }}" alt="{{ c.alt }}" loading="eager" decoding="async" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover"></div>
          <div style="display:flex;justify-content:space-between;align-items:baseline;gap:12px">
            <div style="position:relative;display:inline-block;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:36px;text-transform:uppercase;line-height:1">{{ c.name }}<sc-if value="{{ c.current }}"><span style="position:absolute;top:-0.55em;right:-0.9em;transform:rotate(-9deg);font-size:0.4em;font-weight:900;letter-spacing:0.08em;padding:0.15em 0.35em;border:2px solid #A31C12;border-radius:3px;color:#A31C12;background:#FBF4EC">{{ c.stamp }}</span></sc-if></div>
            <sc-if value="{{ c.current }}"><div style="font-size:12px;letter-spacing:0.08em;text-transform:uppercase;color:#A31C12;font-weight:600">This page</div></sc-if>
          </div>
          <div style="font-size:16px;color:#5E4A40">{{ c.note }}</div>
          <div style="display:grid;grid-template-columns:64px 1fr;gap:10px 14px;align-items:center">
            <div style="font-size:13px;font-weight:600">Heat</div>
            <div style="display:flex;gap:4px"><sc-for list="{{ c.heat }}" as="s"><sc-if value="{{ s.on }}"><div style="flex:1;height:8px;border-radius:2px;background:#A31C12"></div></sc-if><sc-if value="{{ s.off }}"><div style="flex:1;height:8px;border-radius:2px;background:#E0CFBF"></div></sc-if></sc-for></div>
            <div style="font-size:13px;font-weight:600">Colour</div>
            <div style="display:flex;gap:4px"><sc-for list="{{ c.colour }}" as="s"><sc-if value="{{ s.on }}"><div style="flex:1;height:8px;border-radius:2px;background:#C8341F"></div></sc-if><sc-if value="{{ s.off }}"><div style="flex:1;height:8px;border-radius:2px;background:#E0CFBF"></div></sc-if></sc-for></div>
          </div>
          <div style="display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:8px">
            <div style="font-size:15px">100 g · <strong>₹{{ c.priceText }}</strong></div>
            <button sc-camel-on-click="{{ c.add }}" style="position:relative;z-index:2;border:0;border-radius:999px;background:#1F0F0B;color:#F4EADF;padding:12px 20px;font:inherit;font-weight:600;cursor:pointer" style-hover="background:#A31C12">{{ c.btn }}</button>
          </div>
        </div>
      </sc-for>
    </div>
  </section>

  <section id="faq" style="padding:0 72px 120px;display:grid;grid-template-columns:1fr 1.6fr;gap:72px">
    <h2 style="margin:0;font-family:'Big Shoulders Display',sans-serif;font-weight:800;font-size:64px;line-height:0.95;text-transform:uppercase">Questions</h2>
    <div style="border-top:2px solid #1F0F0B">
      <sc-for list="{{ faqs }}" as="f" hint-placeholder-count="5">
        <div style="border-bottom:1px solid #D2BCA8">
          <button sc-camel-on-click="{{ f.toggle }}" style="width:100%;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 0;border:0;background:transparent;font:inherit;font-size:19px;font-weight:600;text-align:left;cursor:pointer;color:#1F0F0B"><span>{{ f.q }}</span><span style="font-size:24px;color:#A31C12">{{ f.sign }}</span></button>
          <sc-if value="{{ f.open }}"><p style="margin:0 0 22px;font-size:17px;line-height:1.6;color:#5E4A40;max-width:40em">{{ f.a }}</p></sc-if>
        </div>
      </sc-for>
    </div>
  </section>

  <footer style="background:#A31C12;color:#FFF6EE;padding:72px;display:flex;justify-content:space-between;align-items:end;gap:40px">
    <div style="font-family:'Big Shoulders Display',sans-serif;font-weight:900;font-size:88px;line-height:0.9;text-transform:uppercase">Miller<br>Stores</div>
    <div style="display:flex;flex-direction:column;gap:8px;font-size:16px;text-align:right">
      <div>Ground in front of you · Karnataka chillies</div>
      <div>Visit the store or call to order</div>
    </div>
  </footer>
</div>
</x-dc>
<script type="text/x-dc" data-dc-script="" data-props="{&quot;price100&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:60,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;},&quot;price250&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:140,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;},&quot;price500&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:260,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;},&quot;priceKashmiri&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:70,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;},&quot;priceGuntur&quot;:{&quot;editor&quot;:&quot;int&quot;,&quot;default&quot;:50,&quot;tsType&quot;:&quot;number&quot;,&quot;section&quot;:&quot;Prices (₹)&quot;}}">
class Component extends DCLogic {
  state = { size: '250', qty: 1, cart: {}, faq: -1, added: '', busy: '', err: '', buying: false };
  bars(n) { return [1,2,3,4,5].map(i => ({ on: i <= n, off: i > n })); }
  pids = {"karnataka-100": 3455, "karnataka-250": 3457, "karnataka-500": 3456, "kashmiri-100": 3399, "guntur-100": 4806};
  money(n) { const v = Math.round(n * 100) / 100; return Number.isInteger(v) ? String(v) : v.toFixed(2); }

  cartLines = {};
  cartReady = false;
  cartBoot() {
    if (this._cartBoot) return;
    this._cartBoot = true;
    setTimeout(() => this.syncCart(), 0);
    window.addEventListener('pageshow', e => { if (e.persisted) this.syncCart(); });
  }
  syncCart() {
    fetch('/shop/cart', { credentials: 'same-origin' }).then(r => r.text()).then(h => {
      const d = new DOMParser().parseFromString(h, 'text/html'), m = {};
      d.querySelectorAll('input.js_quantity[data-product-id]').forEach(i => {
        const p = i.getAttribute('data-product-id');
        (m[p] = m[p] || []).push({ line: parseInt(i.getAttribute('data-line-id'), 10), qty: parseFloat(i.value) || 0 });
      });
      this.cartLines = m; this.cartReady = true; this.setState({ rev: Date.now() });
    }).catch(() => { this.cartReady = true; this.setState({ rev: Date.now() }); });
  }
  inCart(pid) { return (this.cartLines[pid] || []).reduce((a, l) => a + l.qty, 0); }
  cartPost(params) {
    return fetch('/shop/cart/update_json', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json', 'X-CSRFToken': (window.odoo && odoo.csrf_token) || '' },
      body: JSON.stringify({ jsonrpc: '2.0', method: 'call', params })
    }).then(r => r.json()).then(res => {
      const o = res && res.result;
      if (!o || res.error) throw new Error('cart');
      if (typeof o.cart_quantity === 'number') {
        document.querySelectorAll('.my_cart_quantity').forEach(el => {
          el.textContent = String(o.cart_quantity);
          const w = el.closest('.o_wsale_my_cart, [class*="my_cart"]');
          if (w && o.cart_quantity) w.classList.remove('d-none');
        });
      }
      return o;
    });
  }
  step(pid, delta) {
    if (!pid || this._busy) return null;
    if (delta < 0 && !this.inCart(pid)) return null;
    const ls = this.cartLines[pid] || [];
    const t = delta > 0 ? ls[0] : ls.slice().reverse().find(l => l.qty > 0);
    const params = { product_id: pid, add_qty: delta };
    if (t) params.line_id = t.line;
    this._busy = true;
    this.setState({ busy: String(pid), err: '' });
    return this.cartPost(params).then(o => {
      const lid = o.line_id || (t && t.line);
      let arr = (this.cartLines[pid] || []).slice();
      if (lid && typeof o.quantity === 'number') {
        const i = arr.findIndex(l => l.line === lid);
        if (i >= 0) arr[i] = { line: lid, qty: o.quantity }; else arr.push({ line: lid, qty: o.quantity });
      }
      this.cartLines = { ...this.cartLines, [pid]: arr.filter(l => l.qty > 0) };
      this._busy = false;
      this.setState({ busy: '', added: delta > 0 ? String(pid) : '' });
      clearTimeout(this._at); this._at = setTimeout(() => this.setState({ added: '' }), 1600);
      return true;
    }).catch(() => {
      this._busy = false;
      this.setState({ busy: '', err: String(pid) });
      clearTimeout(this._et); this._et = setTimeout(() => this.setState({ err: '' }), 2400);
      return false;
    });
  }
  buy(pid) {
    const go = () => { this.setState({ buying: true }); window.location.href = '/shop/checkout?express=1'; };
    if (this.inCart(pid)) { go(); return; }
    const p = this.step(pid, 1);
    if (p) p.then(ok => { if (ok) go(); });
  }
  renderVals() {
    const P = this.props;
    const prices = { '100': 85.06, '250': 221.56, '500': 389.56 };
    const s = this.state;
    const items = Object.values(s.cart);
    const mainKey = 'karnataka-' + s.size;
    const pidSel = this.pids[mainKey]; const n = this.inCart(pidSel); this.cartBoot();
    const range = [{"id": "karnataka", "name": "Karnataka", "note": "Very hot, deep red colour", "h": 5, "c": 4, "price": 85.06, "stamp": "Spicy", "url": "/karnataka-spicy-chilli-powder", "current": true, "href": "#buy", "linkLabel": "Choose a size of Karnataka chilli powder"}, {"id": "kashmiri", "name": "Kashmiri", "note": "Very low heat, bright red colour", "h": 1, "c": 5, "price": 199.5, "stamp": "Mild", "url": "/kashmiri-chilli-powder", "current": false, "href": "/kashmiri-chilli-powder", "linkLabel": "View Kashmiri chilli powder"}, {"id": "guntur", "name": "Guntur", "note": "Everyday heat, lighter colour", "h": 3, "c": 2, "price": 73.5, "stamp": "Hot", "url": "/guntur-chilli-powder", "current": false, "href": "/guntur-chilli-powder", "linkLabel": "View Guntur chilli powder"}].map(c => {
      const key = c.id + '-100';
      return { ...c, img: ({ karnataka: '/web/image/product.template/10007/image_512', kashmiri: '/web/image/product.template/9974/image_512', guntur: '/web/image/product.template/10085/image_512' })[c.id], alt: c.name + ' chilli powder', priceText: this.money(c.price), slot: 'chilli-range-' + c.id, ph: 'Drop ' + c.name + ' chilli photo', heat: this.bars(c.h), colour: this.bars(c.c),
        btn: s.err === String(this.pids[key]) ? 'Retry' : s.busy === String(this.pids[key]) ? 'Adding…' : this.inCart(this.pids[key]) ? 'Add (' + this.inCart(this.pids[key]) + ' in cart)' : 'Add', add: () => this.step(this.pids[key], 1) };
    });
    const faqs = [["How hot is it?", "Very hot. Start with half the amount you use of a regular chilli powder. For colour with less heat, mix in some Kashmiri."], ["Is anything added?", "No. It is only dried Karnataka chillies, ground. No added colour, salt, oil or preservatives."], ["How is it tested?", "Random batches are lab-tested before they go on sale. Ask in store to see the latest report."], ["Is the stem removed from the chillies?", "Yes. The stems are removed by machine before grinding, which takes out 70–80% of the stem before the chillies are powdered."], ["Can I watch it being ground?", "Yes. Order in store and we grind it in front of you."], ["Why does it clump?", "Because there is no anti-caking agent in it. Freshly ground chilli carries its own oil and absorbs humidity. Break it up with a dry spoon - it is a sign of what is absent."], ["How long does it keep, and how should I store it?", "Best within three to four months, in an airtight, opaque container in a cool, dark cupboard. Avoid the fridge: a cold jar taken in and out of a warm kitchen gathers moisture and the powder cakes. It stays safe longer, but the aroma fades before the colour does."], ["Can I bring my own chillies to be milled?", "No. Only Miller Stores' own chillies go through our mill, so nothing from outside can cross-contaminate what you buy."], ["What do I cook with it?", "Chammanthi, fry masalas and gravies where you want real heat. For a deep red colour without the burn, blend it with Kashmiri."], ["What is it called in other languages?", "Mulaku podi (Malayalam), Menasina pudi (Kannada), Milagai thool (Tamil), Kaaram podi (Telugu) and Lal mirch powder (Hindi)."]].map(([q, a], i) => ({ q, a, open: s.faq === i, sign: s.faq === i ? '−' : '+', toggle: () => this.setState({ faq: s.faq === i ? -1 : i }) }));
    return {
      cartCount: items.reduce((a, b) => a + b.n, 0),
      cartTotal: items.reduce((a, b) => a + b.n * b.price, 0),
      heroHeat: this.bars(5), heroColour: this.bars(4),
      sizes: ['100', '250', '500'].map(z => ({ label: z + ' g', price: this.money(prices[z]), active: s.size === z, inactive: s.size !== z, pick: () => this.setState({ size: z }) })),
      qty: this.cartReady ? n : '–',
      inc: () => this.step(pidSel, 1),
      dec: () => this.step(pidSel, -1),
      addMain: () => n ? (window.location.href = '/shop/cart') : this.step(pidSel, 1),
      buyNow: () => this.buy(pidSel),
      buyLabel: s.buying ? 'Going to checkout…' : 'Buy now',
      addLabel: this.state.err === String(pidSel) ? 'Could not update cart. Try again' : this.state.busy === String(pidSel) ? 'Updating…' : n ? 'View cart (' + n + ')' : 'Add to cart · ₹' + this.money(prices[s.size]),
      compare: [{"k": "Colour from", "us": "The chilli itself", "them": "Often boosted with added colour"}, {"k": "Preservatives", "us": "None", "them": "Sometimes added"}, {"k": "Where it’s ground", "us": "In front of you", "them": "Out of sight, months earlier"}, {"k": "Sourcing", "us": "Direct from Karnataka farmers", "them": "Through traders, mixed origins"}, {"k": "Testing", "us": "Random batch lab testing", "them": "Rarely shared"}, {"k": "Heat", "us": "Very hot, consistent", "them": "Varies pack to pack"}],
      range, faqs
    };
  }
}
</script>

 

</div></template><script>(function(){
  if (window.__lpBoot) return; window.__lpBoot = true;
  if (/enable_editor|edit_translations/.test(location.search) || document.body.classList.contains('editor_enable')) return;
  /* without __resources the runtime re-fetches this page and mounts the FIRST <x-dc> (mobile) */
  window.__resources = window.__resources || {};
  var mq = window.matchMedia('(min-width: 992px)');
  if (mq.matches) {
    var host = document.getElementById('lp-host'), tpl = document.getElementById('lp-desk-tpl');
    if (host && tpl) { host.innerHTML = ''; host.appendChild(document.importNode(tpl.content, true)); }
  }
  var list = ["/web/content/37415", "/web/content/37416", "/web/content/37413", "/web/content/37414"], i = 0;
  (function next(){
    if (i >= list.length) return;
    var s = document.createElement('script'); s.src = list[i++]; s.async = false;
    s.onload = next; document.head.appendChild(s);
  })();
  var was = mq.matches;
  var flip = function(){ if (mq.matches !== was) location.reload(); };
  if (mq.addEventListener) mq.addEventListener('change', flip); else if (mq.addListener) mq.addListener(flip);
})();</script><div class="oe_structure" id="oe_structure_lp_bottom"></div>