.elementor-kit-182{--e-global-color-primary:#131315;--e-global-color-secondary:#16a34a;--e-global-color-text:#52525b;--e-global-color-accent:#16a34a;--e-global-color-5acf1a6:#FFFFFF;--e-global-color-bfe56f5:#16a34a;--e-global-typography-primary-font-family:"Anek Telugu";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Anek Telugu";--e-global-typography-secondary-font-weight:500;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Poppins";--e-global-typography-accent-font-weight:600;}.elementor-kit-182 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1440px;}.e-con{--container-max-width:1440px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}.elementor-widget:not(:last-child){--kit-widget-spacing:10px;}.elementor-element{--widgets-spacing:10px 10px;--widgets-spacing-row:10px;--widgets-spacing-column:10px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* --- Kestra North: brand the native WooCommerce controls ------------------ */
/* Woo ships its own purple (#7f54b3) and applies it after Elementor, so the
   accent has to be restated here rather than in the widget settings. */
.woocommerce button.button,
.woocommerce button.button.alt,
.woocommerce a.button,
.woocommerce a.button.alt,
.woocommerce input.button,
.woocommerce input.button.alt,
.woocommerce .single_add_to_cart_button,
.woocommerce #respond input#submit,
.woocommerce a.added_to_cart,
.elementor-add-to-cart a.button,
a.add_to_cart_button {
    background-color: #16a34a;
    color: #ffffff;
    border-radius: 9px;
    font-weight: 600;
}

.woocommerce button.button:hover,
.woocommerce button.button.alt:hover,
.woocommerce a.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce input.button:hover,
.woocommerce input.button.alt:hover,
.woocommerce .single_add_to_cart_button:hover,
.woocommerce #respond input#submit:hover {
    background-color: #12813c;
    color: #ffffff;
}

/* A disabled control must not read as a live call to action. */
.woocommerce button.button.disabled,
.woocommerce button.button:disabled {
    background-color: #d4d4d8;
    color: #52525b;
}

/* --- de-duplicate the related-products heading --------------------------- */
/* The Elementor section above already supplies a styled heading. */
.elementor-widget-woocommerce-product-related .related > h2 {
    display: none;
}

/* --- product card, matching kestraclub.com ------------------------------- */
/* The reference card uses an aspect-square media tile. A fixed pixel height
   cannot stay square across a ~170px mobile column and a ~450px desktop one,
   so the ratio is enforced here rather than in the widget's height setting. */
.kestra-card__media,
.kestra-card__media .elementor-widget-container,
.kestra-card__media img {
    aspect-ratio: 3 / 2;
    width: 100%;
}

/* The product masters are 3:2 (1264x848), so the tile is 3:2 too.
   Square tiles were tried both ways and neither held up: `cover` crops a third
   of the frame and reads as a zoomed, tightly-cropped vial, while `contain`
   letterboxes it and leaves the vial looking small and lost in the tile.
   Matching the tile to the source ratio shows the whole shot at full size with
   no crop and no empty bands. (The US site uses a square tile on the same 3:2
   masters and takes the crop; this reads better.) */
.kestra-card__media img {
    object-fit: cover;
    display: block;
    transition: transform .5s ease;
}

/* --- equal-height cards ------------------------------------------------- */
/* Without this a longer product name (e.g. "BPC-157 10mg" wrapping to two
   lines on a 153px mobile column) pushes that card's price row lower than its
   neighbour's, so the arrows sit at different heights across the grid. */
.elementor-loop-container .e-loop-item {
    display: flex;
}

.kestra-card {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.kestra-card > .e-con-inner {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}

.kestra-card__body,
.kestra-card__body > .e-con-inner {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

/* Pin the price + arrow row to the bottom of every card. */
.kestra-card__row {
    margin-top: auto !important;
}

.kestra-card {
    transition: transform .3s ease, box-shadow .3s ease;
}

/* hover:-translate-y-1 hover:shadow-soft on the reference */
.kestra-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 28px -12px rgba(19, 19, 21, .18);
}

.kestra-card:hover .kestra-card__media img {
    transform: scale(1.05);
}

/* The card is one link; nothing inside should look separately clickable. */
.kestra-card a {
    text-decoration: none;
}

/* --- header search toggle ------------------------------------------------ */
/* The native search-form replaced ElementsKit's widget (which dragged in a
   454 KB icon font). Its default toggle renders as a grey chip at 33px; this
   matches it to the 25px ink cart icon beside it. */
/* Elementor writes the toggle's size custom property inline on the element and
   sizes the glyph from it, so both need !important to be overridden — without
   it the magnifier rendered at 6.6px next to a 25px cart icon. */
.elementor-widget-search-form .elementor-search-form__toggle {
    --e-search-form-toggle-size: 22px !important;
    --e-search-form-toggle-color: #131315 !important;
    --e-search-form-toggle-background-color: transparent !important;
    --e-search-form-toggle-border-width: 0 !important;
    background-color: transparent !important;
    border: none !important;
    color: #131315;
    font-size: 22px !important;
    width: 22px;
    height: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.elementor-widget-search-form .elementor-search-form__toggle svg,
.elementor-widget-search-form .elementor-search-form__toggle i {
    width: 22px !important;
    height: 22px !important;
    font-size: 22px !important;
    fill: #131315;
    transition: fill .15s ease;
}

.elementor-widget-search-form .elementor-search-form__toggle:hover svg {
    fill: #16a34a;
}

/* --- touch targets ------------------------------------------------------- */
/* Measured on a 390px viewport: the product-card "Add to cart" rendered 30px
   tall and the header cart link 22px, against the 44px touch-target guideline.
   That button is the primary conversion action on the page, so it is the last
   thing that should be fiddly to hit. Desktop is unaffected. */
@media (max-width: 767px) {
    .woocommerce a.button,
    .woocommerce button.button,
    .woocommerce input.button,
    .woocommerce .single_add_to_cart_button,
    .elementor-add-to-cart a.button,
    .e-loop-add-to-cart-form a.button,
    a.add_to_cart_button {
        min-height: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }

    .elementor-widget-woocommerce-menu-cart .elementor-menu-cart__toggle a,
    .elementor-widget-woocommerce-menu-cart .elementor-button,
    .elementor-widget-elementskit-header-search a {
        min-height: 44px;
        min-width: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }

    /* The quantity field sits beside the button and should match its height. */
    .woocommerce .quantity .qty {
        min-height: 44px;
    }
}

/* --- keep blog furniture out of the product page ------------------------- */
/* Jetpack injects this into the description tab and re-asserts display:block
   from its own stylesheet, so the override has to outrank it explicitly. */
#jp-relatedposts,
.jp-relatedposts,
.single-product #jp-relatedposts,
.woocommerce-Tabs-panel #jp-relatedposts {
    display: none !important;
}
/* --- Certificate of Analysis modal -------------------------------------- */
/* Opens in place instead of a new tab, so the customer keeps their position
   on the product page. Structure follows the pattern Amino Club uses. */
.kn-coa[hidden] { display: none; }

.kn-coa {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.kn-coa__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(19, 19, 21, .38);
    backdrop-filter: blur(4px);
}

.kn-coa__panel {
    position: relative;
    width: 100%;
    max-width: 430px;
    max-height: 88vh;
    overflow-y: auto;
    background: #fff;
    border-radius: 18px;
    padding: 26px 24px 22px;
    box-shadow: 0 24px 60px -20px rgba(19, 19, 21, .45);
}

/* The theme styles bare <button>, and focusing the close on open added a blue
   ring on top of it — the control rendered as a red-on-blue disc. Reset hard. */
.kn-coa__close,
.kn-coa__close:focus,
.kn-coa__close:active {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 0 !important;
    border-radius: 50% !important;
    background: transparent !important;
    background-image: none !important;
    color: #52525b !important;
    font-size: 22px;
    font-weight: 400;
    line-height: 1;
    cursor: pointer;
    box-shadow: none !important;
    outline: none;
    -webkit-appearance: none;
    appearance: none;
}

.kn-coa__close:hover {
    background: #f4f4f5 !important;
    color: #131315 !important;
}

/* Keep a visible focus indicator for keyboard users, just not the default one. */
.kn-coa__close:focus-visible {
    box-shadow: 0 0 0 2px #16a34a !important;
}

.kn-coa__title {
    margin: 0 34px 14px 0;
    font-family: "Anek Telugu", sans-serif;
    font-size: 19px;
    font-weight: 700;
    color: #131315;
    line-height: 1.25;
}

.kn-coa__notice {
    margin-bottom: 14px;
    padding: 9px 11px;
    border-radius: 9px;
    background: #FEF2F2;
    border: 1px solid #FECACA;
    color: #B91C1C;
    font-size: 12px;
    line-height: 1.45;
}

.kn-coa__hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 15px 16px;
    border-radius: 12px;
    background: #FAFAFA;
}

.kn-coa__purity {
    display: block;
    font-family: "Anek Telugu", sans-serif;
    font-size: 30px;
    font-weight: 700;
    color: #131315;
    line-height: 1.1;
}

.kn-coa__purity-label { font-size: 12.5px; color: #52525b; }

.kn-coa__lot {
    display: flex;
    flex-direction: column;
    gap: 3px;
    text-align: right;
    font-size: 12.5px;
    color: #52525b;
}

.kn-coa__lot strong { color: #131315; }

.kn-coa__accred {
    margin: 12px 0 6px;
    font-size: 12.5px;
    color: #16a34a;
    font-weight: 600;
}

.kn-coa__table { margin-bottom: 18px; }

.kn-coa__row {
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: center;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px solid #EFEFF1;
    font-size: 13px;
}

.kn-coa__label { color: #131315; }
.kn-coa__spec { color: #52525b; }

.kn-coa__pill {
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .04em;
}

.kn-coa__pill--pass { background: #E9FCE6; color: #15803d; }
.kn-coa__pill--pending { background: #F4F4F5; color: #52525b; }

.kn-coa__btn {
    display: block;
    text-align: center;
    padding: 13px 18px;
    border-radius: 10px;
    font-family: "Anek Telugu", sans-serif;
    font-size: 15px;
    font-weight: 600;
    text-decoration: none;
}

.kn-coa__btn--primary { background: #131315; color: #fff; }
.kn-coa__btn--primary:hover { background: #000; color: #fff; }

.kn-coa__foot {
    margin: 12px 0 0;
    text-align: center;
    font-size: 11.5px;
    color: #52525b;
}

@media (max-width: 480px) {
    .kn-coa__panel { padding: 22px 18px 18px; max-height: 92vh; }
    .kn-coa__row { grid-template-columns: 1fr auto; }
    .kn-coa__spec { display: none; }
}

/* --- product content blocks ported from the US site --------------------- */
/* Alias chips under the product title (US: rounded-full border pills). */
.kn-chips { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 12px; }

.kn-chip {
    display:inline-flex; align-items:center;
    padding:4px 12px;
    border:1px solid rgba(19,19,21,.12);
    border-radius:999px;
    font-family:"Anek Telugu",sans-serif;
    font-size:12px; color:rgba(19,19,21,.8); line-height:1.4;
}

/* Compound Information / Sources headings inside the description tab. */
.kn-h3 {
    margin:34px 0 6px;
    font-family:"Anek Telugu",sans-serif;
    font-size:22px; font-weight:600; color:#131315;
}

.kn-sub { margin:0 0 14px; font-size:14.5px; color:#52525b; }

.kn-spec-table { width:100%; border-collapse:collapse; margin-bottom:14px; }

.kn-spec-table th, .kn-spec-table td {
    padding:10px 12px; border-bottom:1px solid #EFEFF1;
    font-size:14px; text-align:left;
}

.kn-spec-table th { width:42%; font-weight:500; color:#52525b; }
.kn-spec-table td { color:#131315; font-weight:600; }

.kn-extlink {
    font-family:"Anek Telugu",sans-serif;
    font-size:14px; font-weight:600; color:#16a34a; text-decoration:none;
}
.kn-extlink:hover { text-decoration:underline; }

/* Reference cards. */
.kn-refs { list-style:none; margin:0; padding:0; display:grid; gap:14px; }

.kn-ref {
    display:flex; flex-direction:column; gap:4px;
    padding:18px; border:1px solid #E6E6E9; border-radius:16px; background:#fff;
}

.kn-ref__journal {
    font-family:"Poppins",sans-serif; font-size:11px; font-weight:600;
    letter-spacing:.09em; text-transform:uppercase; color:#16a34a;
}

.kn-ref__title {
    font-family:"Anek Telugu",sans-serif; font-size:15.5px;
    font-weight:600; color:#131315; line-height:1.35;
}

.kn-ref__meta { font-size:13px; color:#52525b; }

/* The RUO badge beside the research-use notice (US: a muted [RUO] pill). */
.kn-ruo { display:flex; align-items:flex-start; gap:10px; }

.kn-ruo__badge {
    flex-shrink:0; margin-top:1px; padding:2px 8px; border-radius:6px;
    background:#F4F4F5; color:#52525b;
    font-family:"Poppins",sans-serif; font-size:10.5px;
    font-weight:700; letter-spacing:.06em;
}

/* 4-up trust strip in the buy column, matching the US TrustRow. */
.kn-trust {
    list-style:none; margin:0; padding:0;
    display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px;
}

.kn-trust li {
    display:flex; align-items:center; gap:10px;
    padding:10px 12px; border:1px solid #E6E6E9; border-radius:12px; background:#fff;
}

.kn-trust__icon {
    flex-shrink:0; width:30px; height:30px; display:grid; place-items:center;
    border-radius:999px; background:#E9FCE6; color:#16a34a; font-size:14px;
}

.kn-trust__label {
    font-family:"Anek Telugu",sans-serif; font-size:12.5px;
    font-weight:500; line-height:1.25; color:#131315;
}

/* --- research disclaimer block (US: ResearchDisclaimer) ------------------ */
.kn-disclaimer {
    display:flex; gap:18px; align-items:flex-start;
    padding:24px; border:1px solid rgba(19,19,21,.10);
    border-radius:16px; background:#FEF4F5;
}

.kn-disclaimer__icon {
    flex-shrink:0; width:44px; height:44px; display:grid; place-items:center;
    border-radius:12px; background:rgba(255,255,255,.75); color:#9F1239; font-size:18px;
}

.kn-disclaimer__title {
    margin:0 0 8px;
    font-family:"Anek Telugu",sans-serif;
    font-size:16px; font-weight:700; color:#131315;
}

.kn-disclaimer__body p { margin:0 0 10px; font-size:14px; line-height:1.65; color:rgba(19,19,21,.8); }
.kn-disclaimer__body p:last-child { margin-bottom:0; }

@media (max-width:600px) {
    .kn-disclaimer { flex-direction:column; gap:14px; padding:20px; }
}

/* --- mobile sticky buy bar (US: StickyBuyBar) ---------------------------- */
.kn-sticky {
    position:fixed; left:0; right:0; bottom:0; z-index:9990;
    border-top:1px solid rgba(19,19,21,.10);
    background:rgba(255,255,255,.97);
    backdrop-filter:blur(8px);
    transform:translateY(100%);
    transition:transform .28s ease;
    padding-bottom:env(safe-area-inset-bottom);
}

.kn-sticky--on { transform:translateY(0); }

/* Desktop keeps the real buy box in view; the bar is a mobile affordance. */
@media (min-width:1025px) { .kn-sticky { display:none; } }

.kn-sticky__inner {
    display:flex; align-items:center; gap:12px;
    max-width:1240px; margin:0 auto; padding:10px 16px;
}

.kn-sticky__meta { display:flex; flex-direction:column; min-width:0; flex:1 1 auto; }

.kn-sticky__name {
    font-family:"Anek Telugu",sans-serif; font-size:13.5px; font-weight:600;
    color:#131315; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

.kn-sticky__price {
    font-family:"Anek Telugu",sans-serif; font-size:15px; font-weight:700; color:#131315;
}

.kn-sticky__btn {
    flex-shrink:0; min-height:44px; padding:0 22px; border:0; border-radius:10px;
    background:#16a34a; color:#fff; cursor:pointer;
    font-family:"Anek Telugu",sans-serif; font-size:15px; font-weight:600;
}

.kn-sticky__btn:hover { background:#12813c; }

/* --- free-shipping progress (US: CartDrawer) ----------------------------- */
.kn-ship { padding:12px 0 14px; }

.kn-ship__msg {
    margin:0 0 8px;
    font-family:"Roboto",sans-serif; font-size:13px; color:#52525b;
}
.kn-ship__msg strong { color:#131315; font-weight:700; }

.kn-ship__track {
    height:6px; border-radius:999px; background:#EFEFF1; overflow:hidden;
}
.kn-ship__fill {
    height:100%; border-radius:999px; background:#16a34a;
    transition:width .35s ease;
}

.elementor-menu-cart__main .kn-ship { padding:0 0 14px; }

/* --- cart page trust strip ----------------------------------------------- */
.kn-cart-trust {
    list-style:none; margin:0; padding:0;
    display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px;
}

.kn-cart-trust li {
    display:flex; gap:11px; align-items:flex-start;
    padding:14px; border:1px solid #E6E6E9; border-radius:14px; background:#fff;
}

.kn-cart-trust__icon {
    flex-shrink:0; width:32px; height:32px; display:grid; place-items:center;
    border-radius:999px; background:#E9FCE6; color:#16a34a;
}

.kn-cart-trust li > span:last-child { display:flex; flex-direction:column; gap:2px; }
.kn-cart-trust strong {
    font-family:"Anek Telugu",sans-serif; font-size:13.5px; font-weight:600; color:#131315;
}
.kn-cart-trust li span span { font-size:12.5px; color:#52525b; line-height:1.45; }

@media (max-width:700px) { .kn-cart-trust { grid-template-columns:1fr; } }

/* --- checkout security line ---------------------------------------------- */
.kn-checkout-trust {
    display:flex; gap:12px; align-items:flex-start;
    padding:16px 18px; border:1px solid #E6E6E9; border-radius:14px;
    background:#FAFAFA;
}

.kn-checkout-trust__icon {
    flex-shrink:0; width:32px; height:32px; display:grid; place-items:center;
    border-radius:999px; background:#E9FCE6; color:#16a34a;
}

.kn-checkout-trust span:last-child {
    font-size:13px; line-height:1.6; color:#52525b;
}
.kn-checkout-trust strong { color:#131315; }

/* --- sticky header ------------------------------------------------------- */
/* Keeps the cart, search and nav reachable from anywhere on a long product
   page. Also resolves the theme's pre-existing quirk where the content wrapper
   renders 10px above the header's bottom edge: with a stacking context the
   header now paints above content instead of under it. */
header.elementor-location-header {
    position: sticky;
    top: 0;
    z-index: 999;
    background: #fff;
    transition: box-shadow .2s ease;
}

body.kn-scrolled header.elementor-location-header {
    box-shadow: 0 2px 14px -6px rgba(19,19,21,.22);
}

/* --- product gallery: one frame for every shot --------------------------- */
/* The primary is 3:2 landscape and the lab/macro shots are portrait, so the
   frame changed shape between images. Pin them all to one square. */
.woocommerce-product-gallery__image,
.woocommerce-product-gallery__image a {
    display: block;
    width: 100%;
}

.woocommerce-product-gallery__image img,
.flex-control-thumbs li img {
    aspect-ratio: 1 / 1;
    width: 100%;
    height: auto;
    object-fit: cover;
    object-position: center;
}

.flex-control-thumbs li img { border-radius: 10px; }

/* --- buy box ------------------------------------------------------------- */
/* The default control was a small button beside a small number field on the
   page's most important action. */
.woocommerce div.product form.cart {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 10px;
    margin-bottom: 6px;
}

.woocommerce div.product form.cart .button.single_add_to_cart_button {
    flex: 1 1 auto;
    min-height: 54px;
    padding: 0 28px;
    border-radius: 10px;
    font-size: 16.5px;
    font-weight: 600;
    letter-spacing: .01em;
}

/* Quantity stepper: −  n  + at 44px touch targets. */
.kn-qty {
    display: inline-flex;
    align-items: stretch;
    border: 1px solid #D4D4D8;
    border-radius: 10px;
    overflow: hidden;
    background: #fff;
    flex: 0 0 auto;
}

/* The theme styles bare <button> white-on-brand, so the stepper glyphs
   rendered white on a white field — present in the DOM, invisible on screen.
   Colour and size have to be asserted. */
.kn-qty .kn-qty__btn,
.woocommerce div.product form.cart .kn-qty .kn-qty__btn {
    width: 44px;
    min-height: 54px;
    padding: 0;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    background-image: none !important;
    color: #131315 !important;
    font-size: 20px !important;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    box-shadow: none !important;
}

.kn-qty__btn:hover { background: #F4F4F5; }

.woocommerce div.product form.cart .kn-qty input.qty {
    width: 46px;
    min-height: 54px;
    border: 0;
    border-left: 1px solid #EFEFF1;
    border-right: 1px solid #EFEFF1;
    background: transparent;
    text-align: center;
    font-family: "Anek Telugu", sans-serif;
    font-size: 15.5px;
    font-weight: 600;
    color: #131315;
    -moz-appearance: textfield;
}

.woocommerce div.product form.cart .kn-qty input.qty::-webkit-outer-spin-button,
.woocommerce div.product form.cart .kn-qty input.qty::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Availability line under the CTA. */
.kn-avail {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 2px 0 0;
    font-family: "Roboto", sans-serif;
    font-size: 13px;
    color: #52525b;
}

.kn-avail__dot {
    width: 8px;
    height: 8px;
    border-radius: 999px;
    background: #16a34a;
    flex-shrink: 0;
}

/* Price gets more weight above the fold. */
.elementor-widget-woocommerce-product-price .price {
    font-size: 30px !important;
    line-height: 1.15;
}

@media (max-width: 600px) {
    .woocommerce div.product form.cart .button.single_add_to_cart_button {
        flex: 1 1 100%;
        order: 2;
    }
    .kn-qty { order: 1; }
}

/* --- mobile density ------------------------------------------------------ */
/* Measured 16.7% of the homepage as whitespace at 390px. Section padding is
   handled in the Elementor data; these trim the type rhythm that sits on top
   of it. Desktop is untouched. */
@media (max-width: 767px) {
    .elementor-widget-heading h1,
    .elementor-widget-heading h2 { margin-bottom: 2px; }

    .elementor-widget-text-editor p { margin-bottom: 8px; }
    .elementor-widget-text-editor p:last-child { margin-bottom: 0; }

    .elementor-widget-icon-box .elementor-icon-box-description { margin-bottom: 0; }
    .elementor-widget-icon-box .elementor-icon-box-title { margin-bottom: 4px; }

    /* Woo section headings on cart/checkout/product run large by default. */
    .woocommerce h2, .woocommerce h3 { margin-top: 18px; margin-bottom: 8px; }

    /* The product description tab carries most of the PDP's length. */
    .woocommerce-tabs .panel { padding-top: 6px; }
    .kn-h3 { margin-top: 22px; }
    .kn-spec-table th, .kn-spec-table td { padding: 7px 9px; }
}

/* --- remove the duplicate "View cart" link ------------------------------- */
/* WooCommerce appends this beside Add to cart. It overlapped the button, and
   the slide cart now opens on add carrying its own View cart and Checkout —
   so this is duplicate navigation at the moment of commitment. */
.woocommerce a.added_to_cart,
.woocommerce-page a.added_to_cart {
    display: none !important;
}

/* --- slide cart must fit the viewport ------------------------------------ */
/* At 375px the panel rendered 350px wide starting at x=40, so its right edge
   sat at 390 and the page gained a 5px horizontal scroll while the cart was
   open. Clamp it and stop the body scrolling underneath. */
@media (max-width: 767px) {
    /* Elementor sets BOTH left and right on the fixed panel, so the browser
       resolves the box from left + width and the right edge can land past the
       viewport. Anchoring purely to the right removes the conflict. */
    .elementor-menu-cart__main {
        left: auto !important;
        right: 0 !important;
        width: min(350px, 88vw) !important;
        max-width: 100vw !important;
    }
}

html, body { overflow-x: hidden; }

/* --- ported content pages (quality, coa, affiliate, membership, journal) -- */
.kn-lead {
    font-size: 17px; line-height: 1.7; color: #131315;
    max-width: 62ch; margin: 0 0 22px;
}

.kn-h2 {
    margin: 40px 0 14px;
    font-family: "Anek Telugu", sans-serif;
    font-size: 27px; font-weight: 600; color: #131315; line-height: 1.2;
}

.kn-note {
    margin: 22px 0; padding: 14px 16px;
    border: 1px solid #E6E6E9; border-left: 3px solid #16a34a;
    border-radius: 10px; background: #FAFAFA;
    font-size: 14px; line-height: 1.65; color: #52525b;
}

.kn-cards, .kn-stats, .kn-tiers, .kn-check {
    list-style: none; margin: 0 0 8px; padding: 0;
}

.kn-cards { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }

.kn-card {
    position: relative; padding: 20px;
    border: 1px solid #E6E6E9; border-radius: 16px; background: #fff;
}

.kn-card h3 {
    margin: 0 0 6px;
    font-family: "Anek Telugu", sans-serif;
    font-size: 17px; font-weight: 600; color: #131315;
}

.kn-card h3 a { color: #131315; text-decoration: none; }
.kn-card h3 a:hover { color: #16a34a; }
.kn-card p { margin: 0 0 8px; font-size: 14.5px; line-height: 1.6; color: #52525b; }

.kn-card__n {
    display: inline-block; margin-bottom: 8px;
    font-family: "Poppins", sans-serif; font-size: 12px; font-weight: 700;
    letter-spacing: .08em; color: #16a34a;
}

.kn-stats { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 14px; margin-bottom: 8px; }
.kn-stat { padding: 18px; border-radius: 14px; background: #E9FCE6; }
.kn-stat__v { display: block; font-family: "Anek Telugu", sans-serif; font-size: 26px; font-weight: 700; color: #131315; }
.kn-stat__l { font-size: 13px; color: #52525b; }

.kn-check li {
    position: relative; padding-left: 26px; margin-bottom: 9px;
    font-size: 14.5px; line-height: 1.6; color: #52525b;
}
.kn-check li::before {
    content: ""; position: absolute; left: 4px; top: 7px;
    width: 7px; height: 12px; border: solid #16a34a;
    border-width: 0 2px 2px 0; transform: rotate(45deg);
}

.kn-tiers { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; }
.kn-tier { display: flex; flex-direction: column; padding: 20px; border: 1px solid #E6E6E9; border-radius: 16px; background: #fff; }
.kn-tier--featured { border-color: #16a34a; box-shadow: 0 10px 30px -18px rgba(22,163,74,.5); }
.kn-tier h3 { margin: 0 0 4px; font-family: "Anek Telugu", sans-serif; font-size: 18px; font-weight: 700; color: #131315; }
.kn-tier__price { margin: 0; font-family: "Anek Telugu", sans-serif; font-size: 24px; font-weight: 700; color: #131315; }
.kn-tier__cad { font-size: 13px; font-weight: 500; color: #52525b; }
.kn-tier__note { margin: 2px 0 8px; font-size: 12px; color: #52525b; }
.kn-tier__pts { margin: 6px 0 10px; font-size: 13px; font-weight: 600; color: #16a34a; }
.kn-tier .kn-btn { margin-top: auto; }

.kn-btn {
    display: inline-block; margin: 6px 8px 6px 0; padding: 13px 24px;
    border-radius: 10px; background: #16a34a; color: #fff !important;
    font-family: "Anek Telugu", sans-serif; font-size: 15px; font-weight: 600;
    text-align: center; text-decoration: none !important;
}
.kn-btn:hover { background: #12813c; }
.kn-btn--ghost { background: #fff; color: #131315 !important; border: 1px solid #D4D4D8; }
.kn-btn--ghost:hover { background: #F4F4F5; color: #131315 !important; }

.kn-post-ruo, .kn-answer-first {
    padding: 15px 17px; border-radius: 12px;
    font-size: 15px; line-height: 1.65;
}
.kn-answer-first { background: #E9FCE6; color: #131315; font-weight: 500; margin-bottom: 24px; }
.kn-post-ruo { background: #FAFAFA; border: 1px solid #E6E6E9; color: #52525b; font-size: 13.5px; margin-top: 32px; }

.kn-table-wrap { overflow-x: auto; margin: 16px 0 22px; }
.kn-article-table { width: 100%; border-collapse: collapse; min-width: 460px; }
.kn-article-table caption { text-align: left; font-size: 13px; color: #52525b; padding-bottom: 8px; }
.kn-article-table th, .kn-article-table td { padding: 10px 12px; border-bottom: 1px solid #EFEFF1; font-size: 14px; text-align: left; }
.kn-article-table thead th { background: #FAFAFA; font-weight: 600; color: #131315; }

.kn-sources li { margin-bottom: 7px; font-size: 14px; }

@media (max-width: 900px) { .kn-tiers { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 700px) {
    .kn-cards { grid-template-columns: 1fr; }
    .kn-stats { grid-template-columns: 1fr; }
    .kn-tiers { grid-template-columns: 1fr; }
    .kn-h2 { margin: 28px 0 10px; font-size: 23px; }
    .kn-btn { display: block; margin: 8px 0; }
}

/* --- plain (non-Elementor) pages ----------------------------------------- */
/* The ported content pages, the blog and the legal pages render through the
   theme's main.site-main, which sits at the very top of the document with no
   clearance — the sticky header covered the <h1> and the first lines of copy.
   It also has no max-width, so prose ran the full window width. */
body:not(.elementor-page) main.site-main,
body.single-post main.site-main {
    max-width: 900px;
    margin: 0 auto;
    padding: 132px 20px 72px;
}

body:not(.elementor-page) main.site-main .entry-title,
body.single-post main.site-main .entry-title {
    margin: 0 0 18px;
    font-family: "Anek Telugu", sans-serif;
    font-size: 40px;
    font-weight: 600;
    line-height: 1.15;
    color: #131315;
}

body:not(.elementor-page) main.site-main h2,
body.single-post main.site-main h2 {
    font-family: "Anek Telugu", sans-serif;
    color: #131315;
}

body:not(.elementor-page) main.site-main h3,
body.single-post main.site-main h3 {
    margin: 26px 0 8px;
    font-family: "Anek Telugu", sans-serif;
    font-size: 19px;
    font-weight: 600;
    color: #131315;
}

body:not(.elementor-page) main.site-main p,
body.single-post main.site-main p {
    font-size: 15.5px;
    line-height: 1.75;
    color: #52525b;
}

body:not(.elementor-page) main.site-main a,
body.single-post main.site-main a { color: #16a34a; }

body:not(.elementor-page) main.site-main ul,
body.single-post main.site-main ul { font-size: 15.5px; line-height: 1.7; color: #52525b; }

/* Post meta line. */
body.single-post .post-info { color: #52525b; font-size: 13.5px; }

@media (max-width: 767px) {
    body:not(.elementor-page) main.site-main,
    body.single-post main.site-main { padding: 108px 16px 48px; }

    body:not(.elementor-page) main.site-main .entry-title,
    body.single-post main.site-main .entry-title { font-size: 29px; }
}

/* --- single post layout --------------------------------------------------- */
/* The article column ran flush to the window edge — no container padding on
   the post template, so the h1 and every line of body copy started at x=0. */
body.single-post .elementor-location-single > .e-con > .e-con-inner {
    padding-left: 20px;
    padding-right: 20px;
}

body.single-post .elementor-widget-theme-post-content {
    max-width: 74ch;
}

body.single-post .elementor-widget-theme-post-content h2 {
    margin: 34px 0 10px;
    font-family: "Anek Telugu", sans-serif;
    font-size: 26px;
    font-weight: 600;
    color: #131315;
    line-height: 1.25;
}

body.single-post .elementor-widget-theme-post-content h3 {
    margin: 24px 0 8px;
    font-family: "Anek Telugu", sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: #131315;
}

body.single-post .elementor-widget-theme-post-content p,
body.single-post .elementor-widget-theme-post-content li {
    font-size: 16.5px;
    line-height: 1.75;
    color: #52525b;
}

@media (max-width: 767px) {
    body.single-post .elementor-location-single > .e-con > .e-con-inner {
        padding-left: 16px;
        padding-right: 16px;
    }
    body.single-post .elementor-widget-theme-post-content h2 { font-size: 22px; margin-top: 26px; }
}

/* Chips sit after the summary in the DOM so the auto-generated meta
   description reads as prose, but render above it. */
.woocommerce-product-details__short-description,
.elementor-widget-woocommerce-product-short-description .elementor-widget-container {
    display: flex;
    flex-direction: column;
}
.woocommerce-product-details__short-description .kn-chips,
.elementor-widget-woocommerce-product-short-description .kn-chips { order: -1; }

.kn-sr {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

/* === kn-gate focus fix (2026-09-19) === */
/* hello-elementor's reset does: button:focus,button:hover{background:#c36;color:#fff}
   The gate's checkbox is a <button> and its label a <span> with no colour of its
   own, so the label INHERITS white. button:focus (0,1,1) outranks
   .kn-gate__check (0,1,0). Every .elementor-kit-182 below outranks the theme rule, so this
   is order-independent. */
.kn-gate__label{color:#131315;}
.kn-gate__check,
.kn-gate__check:hover,
.kn-gate__check:focus,
.kn-gate__check:focus-visible{background:#fff;color:#131315;text-decoration:none;}
.kn-gate__check[aria-checked="true"],
.kn-gate__check[aria-checked="true"]:hover,
.kn-gate__check[aria-checked="true"]:focus,
.kn-gate__check[aria-checked="true"]:focus-visible{background:#e9fce6;border-color:#16a34a;color:#131315;}
.kn-gate__check:focus-visible{outline:2px solid #16a34a;outline-offset:2px;}
.kn-gate__enter,
.kn-gate__enter:hover,
.kn-gate__enter:focus{background:#e4e4e7;color:#a1a1aa;}
.kn-gate__enter[data-ready="1"],
.kn-gate__enter[data-ready="1"]:hover,
.kn-gate__enter[data-ready="1"]:focus{background:#131315;color:#fff;}
/* === end kn-gate focus fix === */

/* === hide BACS bank details on order-received (2026-09-24) === */
.woocommerce-bacs-bank-details,
.wc-bacs-bank-details-heading,
ul.bacs_details { display: none !important; }
/* === end hide BACS bank details === *//* End custom CSS */