.elementor-kit-5{--e-global-color-primary:#FFFFFF;--e-global-color-secondary:#EDA843;--e-global-color-text:#FFFFFF;--e-global-color-accent:#455FA0;--e-global-color-cb7fd20:#06AAB5;--e-global-color-e0e020c:#814887;--e-global-color-ec01780:#AC3052;--e-global-color-ff69511:#87C39A;--e-global-typography-primary-font-family:"Cyborg";--e-global-typography-primary-font-weight:600;--e-global-typography-primary-text-transform:uppercase;--e-global-typography-secondary-font-family:"Cyborg";--e-global-typography-secondary-font-weight:400;--e-global-typography-secondary-text-transform:uppercase;--e-global-typography-text-font-family:"Source Sans Pro";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Cyborg";--e-global-typography-accent-font-weight:500;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-9a1329d-font-family:"Cyborg";--e-global-typography-9a1329d-font-size:16px;--e-global-typography-9a1329d-font-weight:500;--e-global-typography-9a1329d-text-transform:uppercase;--e-global-typography-9a1329d-font-style:normal;}.elementor-kit-5 e-page-transition{background-color:#FFBC7D;}.elementor-kit-5 a{color:var( --e-global-color-text );line-height:1.35em;}.elementor-kit-5 h1{font-size:4em;text-transform:uppercase;line-height:0.875em;}.elementor-kit-5 h2{font-size:2.25em;text-transform:uppercase;line-height:1em;}.elementor-kit-5 h3{font-size:1.75em;text-transform:uppercase;line-height:1.35em;}.elementor-kit-5 h4{font-size:1.5em;text-transform:uppercase;line-height:1.35em;}.elementor-kit-5 h5{font-size:1.25em;text-transform:uppercase;line-height:1.35em;}.elementor-kit-5 h6{font-size:1.125em;text-transform:uppercase;line-height:1.35em;}.elementor-kit-5 button,.elementor-kit-5 input[type="button"],.elementor-kit-5 input[type="submit"],.elementor-kit-5 .elementor-button{font-family:"Cyborg", Sans-serif;font-size:0.8em;font-weight:500;text-transform:uppercase;padding:10px 35px 10px 35px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1400px;}.e-con{--container-max-width:1400px;}.elementor-widget:not(:last-child){margin-block-end: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:1440px){.elementor-kit-5 h2{line-height:1em;}.elementor-kit-5 button,.elementor-kit-5 input[type="button"],.elementor-kit-5 input[type="submit"],.elementor-kit-5 .elementor-button{padding:10px 25px 10px 25px;}}@media(max-width:992px){.elementor-kit-5{font-size:0.875em;}.elementor-kit-5 h1{font-size:3em;}.elementor-kit-5 h2{font-size:2.25em;line-height:1em;}.elementor-kit-5 h3{font-size:1.5em;}.elementor-kit-5 h4{font-size:1.25em;}.elementor-kit-5 h5{font-size:1.125em;}.elementor-kit-5 h6{font-size:1em;}.elementor-kit-5 button,.elementor-kit-5 input[type="button"],.elementor-kit-5 input[type="submit"],.elementor-kit-5 .elementor-button{padding:5px 20px 5px 20px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:600px){.elementor-kit-5 h1{font-size:2.25em;}.elementor-kit-5 h2{font-size:1.5em;line-height:1em;}.elementor-kit-5 h3{font-size:0.875em;}.elementor-kit-5 h4{font-size:1.125em;}.elementor-kit-5 h5{font-size:1em;}.elementor-kit-5 h6{font-size:0.875em;}.elementor-kit-5 button,.elementor-kit-5 input[type="button"],.elementor-kit-5 input[type="submit"],.elementor-kit-5 .elementor-button{padding:5px 15px 5px 15px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* mcpwp:block:start name="lc-shop-filters" hash="0befa5a1dc0d4bb6" */
/* Lazercat /shop — category hexagons.
   The sub-tab buttons, pager and pre-JS defaults this block used to carry are
   gone: the grid is now an Elementor Loop Grid driven by native taxonomy
   filters (see lc-shop-filters-v2), so the old .lc-tab / .lc-card / .lc-pager
   rules had nothing left to style.

   The dim-until-selected treatment went with them. Nothing on the page knows
   which hexagon is active any more — that state lived in the removed JS — so
   dimming five of six would have been a guess, and it was showing Rosin as
   permanently selected. All six now read as equal. */
.lc-cat-btn{cursor:pointer;transition:transform .2s;}
.lc-cat-btn:hover{transform:translateY(-5px);}
.lc-cat-btn img{transition:filter .2s;}
.lc-cat-btn:hover img{filter:drop-shadow(0 0 10px rgba(0,168,180,.35));}
/* mcpwp:block:end name="lc-shop-filters" */

/* mcpwp:block:start name="lc-locator" hash="0536de7b822d4fc3" */
/* Lazercat /product-locator — states (script lives in Elementor &gt; Custom Code: "lc-locator-js")
   NOTE: the Kit CSS field HTML-escapes "&gt;" and drops those rules — descendant .elementor-kit-5s only. */
/* shared inner wrapper cap */
.lc-wrap{max-width:1280px;}
/* category tabs */
.lc-loctab .elementor-button{transition:all .15s;}
.lc-loctab:hover .elementor-button{color:#fff;border-color:#555;}
.lc-loctab.lc-active .elementor-button{background-color:#EDA843!important;border-color:#EDA843!important;color:#0A0A0A!important;font-weight:600;}
body:not(.lc-locready) .lc-loccat-all .elementor-button{background-color:#EDA843;border-color:#EDA843;color:#0A0A0A;font-weight:600;}
/* product dropdown carousels — hidden until a category tab opens them */
.lc-locdrop{display:none;}
.lc-locdrop.lc-open{display:flex;}
.lc-locdrop .e-con{scrollbar-width:thin;scrollbar-color:#2A2A2A #0A0A0A;}
.lc-locprod{cursor:pointer;transition:transform .15s,border-color .15s;}
.lc-locprod:hover{transform:translateY(-3px);border-color:#555!important;}
.lc-locprod.lc-active{border-color:#06AAB5!important;box-shadow:0 0 0 1px #06AAB5;}
/* shop cards: navigate dropdown */
.lc-navdrop{display:none;}
.lc-navdrop.lc-open{display:flex;}
.lc-navbtn .elementor-button{transition:all .15s;}
.lc-navbtn:hover .elementor-button{filter:brightness(1.2);}
/* search: dark field to match the board */
.lc-locsearch .elementor-field-group input.elementor-field,
.lc-locsearch input[type=text]{background-color:#111214!important;border:1px solid #2A2A2A!important;color:#fff!important;border-radius:10px!important;}
.lc-locsearch input::placeholder{color:#777!important;}
/* mcpwp:block:end name="lc-locator" */

/* mcpwp:block:start name="lc-holo-buttons" hash="cae8bcb775e4638c" */
/* Lazercat sitewide holographic CTA buttons — same recipe as the homepage originals.
   Add class "diagonal-gradient-btn" to any button/form widget to opt in. */
.diagonal-gradient-btn .elementor-button{
    background: linear-gradient(135deg, #A8C8CC 0%, #CCA8B8 35%, #C8CCB0 75%, #A8C4CC 100%) !important;
    background-size: 200% 200% !important;
    background-position: 0% 0% !important;
    transition: background-position 0.6s ease-in-out !important;
}
.diagonal-gradient-btn .elementor-button:hover,
.diagonal-gradient-btn .elementor-button:focus{
    background-position: 100% 100% !important;
}
/* mcpwp:block:end name="lc-holo-buttons" */

/* mcpwp:block:start name="lc-contact" hash="962a26120973ff4e" */
/* Lazercat /contact — FAQ + form detailing (no JS needed on this page) */
/* FAQ accordion dark theme */
.lc-faq .elementor-accordion-item{background:#111214;border:1px solid #2A2A2A!important;border-radius:12px;margin-bottom:12px;overflow:hidden;}
.lc-faq .elementor-tab-title{color:#fff;}
.lc-faq .elementor-tab-title a{color:#fff!important;}
.lc-faq .elementor-tab-content{background:#0E0E11;color:#A6A6A6;border-top:1px solid #2A2A2A!important;}
.lc-faq .elementor-tab-content a{color:#06AAB5;}
/* Department radio → pill .elementor-kit-5.
   NOTE: .elementor-kit-5s are compounded (.lc-contactform.elementor-widget-form) and colors are
   !important because Elementor's own form label_color rule
   (.elementor-XXX .elementor-element-YYY .elementor-field-subgroup label) outranks a
   plain .lc-contactform chain and would paint every pill white. */
.lc-contactform .elementor-field-type-radio .elementor-field-subgroup{display:flex;flex-wrap:wrap;gap:10px;}
.lc-contactform .elementor-field-type-radio .elementor-field-option{position:relative;}
.lc-contactform .elementor-field-type-radio input[type=radio]{position:absolute;opacity:0;inset:0;cursor:pointer;}
.lc-contactform.elementor-widget-form .elementor-field-type-radio input[type=radio]+label{display:inline-block;padding:11px 30px;border:1px solid #2A2A2A;border-radius:10px;color:#A6A6A6!important;background:transparent;font-family:"Cyborg","Source Sans Pro",sans-serif;text-transform:uppercase;font-size:13px;font-weight:500;letter-spacing:1px;cursor:pointer;transition:color .15s,border-color .15s,background-position .6s ease-in-out;margin:0;}
.lc-contactform.elementor-widget-form .elementor-field-type-radio input[type=radio]:hover+label{color:#fff!important;border-color:#555;}
/* active pill = sitewide holographic treatment */
.lc-contactform.elementor-widget-form .elementor-field-type-radio input[type=radio]:checked+label{background:linear-gradient(135deg,#A8C8CC 0%,#CCA8B8 35%,#C8CCB0 75%,#A8C4CC 100%)!important;background-size:200% 200%!important;background-position:0% 0%;border-color:transparent!important;color:#0A0A0A!important;font-weight:600;}
.lc-contactform.elementor-widget-form .elementor-field-type-radio input[type=radio]:checked:hover+label{background-position:100% 100%;color:#0A0A0A!important;}
/* dark inputs (belt &amp; suspenders over native settings) */
.lc-contactform input:not([type=radio]):not([type=checkbox]),.lc-contactform textarea{background-color:#0C0C0F!important;border:1px solid #2A2A2A!important;color:#fff!important;border-radius:10px!important;}
.lc-contactform ::placeholder{color:#666!important;}
.lc-contactform.elementor-widget-form .elementor-field-type-acceptance label{color:#A6A6A6!important;font-size:13px;text-transform:none;letter-spacing:0;}
/* VIP + contact page inputs share the dark treatment */
.lc-vip input[type=email]{background-color:#0C0C0F!important;border:1px solid #2A2A2A!important;color:#fff!important;border-radius:10px!important;}
/* mcpwp:block:end name="lc-contact" */

/* mcpwp:block:start name="lc-pdp" hash="18894af3281d870b" */
/* Lazercat single-product page (PDP) — no JS required.
   NOTE: the Kit CSS field HTML-escapes "&gt;" (child combinator) and silently drops those
   rules — use descendant .elementor-kit-5s only in this file. */
/* breadcrumb */
.lc-crumb a{color:#8A8A8A;text-decoration:none;transition:color .15s;}
.lc-crumb a:hover{color:#06AAB5;}
.lc-crumb span{color:#FFFFFF;}
/* sticky buy box on desktop — keeps the CTA in view while the gallery scrolls */
@media(min-width:1025px){
  .lc-buybox{position:sticky;top:110px;align-self:flex-start;}
}
/* gallery */
.lc-gallery .elementor-image-carousel-wrapper{border-radius:14px;overflow:hidden;}
.lc-gallery .swiper-slide img{background:#0A0A0A;}
.lc-gallery .elementor-swiper-button{color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.7);}
/* small caps labels */
.lc-lbl p{text-transform:uppercase;letter-spacing:1.2px;font-family:"Cyborg","Source Sans Pro",sans-serif;}
/* spec chips hug their label instead of filling the row (Elementor containers default to width:100%) */
.lc-spec{width:auto!important;flex:0 0 auto;transition:border-color .15s;}
.lc-spec:hover{border-color:#555!important;}
.lc-specline:last-child{border-bottom:0!important;}
/* manufacture-date callout: date + batch sit side by side, teal glow */
.lc-mfg{box-shadow:inset 0 0 0 1px rgba(6,170,181,.12);}
.lc-mfg .e-child{width:auto!important;flex:0 0 auto;}
/* trust row: three even columns that stack on mobile */
.lc-trust .elementor-widget{flex:1 1 28%;min-width:150px;}
/* terpene bars */
.lc-terp .elementor-progress-wrapper{border-radius:8px;overflow:hidden;}
.lc-terp .elementor-progress-bar{transition:width 1.2s ease-out;}
/* Each terpene row holds its bar at zero until that row itself scrolls into view.
   The row carries an Elementor entrance animation used purely as a viewport flag —
   Elementor drops .elementor-invisible when the row arrives — so the fade itself is
   cancelled here and only the bar fill is left. Gating per row (rather than on the
   whole card) is what keeps the lower bars from firing while still below the fold;
   the rows arriving in turn provide the stagger. The strain snippet still writes the
   real widths inline, this only decides when they are allowed to show. */
.lc-terp.elementor-invisible{visibility:visible!important;opacity:1!important;}
.lc-terp.animated{animation:none!important;}
.lc-terp.elementor-invisible .elementor-progress-bar{width:0!important;}
@media(prefers-reduced-motion:reduce){
  .lc-terp .elementor-progress-bar{transition:none!important;}
}
/* review + related cards lift on hover */
.lc-review,.lc-relcard{transition:transform .18s,border-color .18s;}
.lc-review:hover,.lc-relcard:hover{transform:translateY(-4px);border-color:#555!important;}
/* mobile sticky CTA bar — hidden on desktop, pinned to the bottom on phones */
.lc-sticky{display:none;}
@media(max-width:767px){
  .lc-sticky{display:block;position:fixed;left:0;right:0;bottom:0;z-index:998;
    box-shadow:0 -8px 24px rgba(0,0,0,.55);}
  body{padding-bottom:78px;}
  .lc-pdpcta .elementor-button{width:100%;justify-content:center;}
}
/* mcpwp:block:end name="lc-pdp" */

/* mcpwp:block:start name="lc-pages4" hash="6228311826570c55" */
/* Lazercat — Merch, Blog list, Blog post, Loyalty. No JS required.
   NOTE: Kit CSS HTML-escapes "&gt;" and drops those rules — descendant .elementor-kit-5s only. */

/* ---------- MERCH ---------- */
.lc-merchcard{transition:transform .18s,border-color .18s;}
.lc-merchcard:hover{transform:translateY(-5px);border-color:#555!important;}
.lc-merchcard img{transition:transform .35s;}
.lc-merchcard:hover img{transform:scale(1.04);}
.lc-size{width:auto!important;flex:0 0 auto;}
.lc-route{transition:border-color .18s;}
.lc-route:hover{border-color:#555!important;}

/* ---------- LOYALTY ---------- */
.lc-step{transition:transform .18s,border-color .18s;}
.lc-step:hover{transform:translateY(-4px);border-color:#555!important;}
/* 4 tiers across: % widths + flex gap overflow the padded container, so use calc */
.lc-tiers .lc-tier{width:calc(25% - 14px)!important;transition:transform .18s;}
.lc-tiers .lc-tier:hover{transform:translateY(-4px);}
@media(max-width:1024px){.lc-tiers .lc-tier{width:calc(50% - 9px)!important;}}
@media(max-width:767px){.lc-tiers .lc-tier{width:100%!important;}}
.lc-rule{min-height:1px;margin:6px 0 4px;}
.lc-tick{line-height:1;}
.lc-rewards .lc-reward{width:calc(33.333% - 12px)!important;transition:transform .18s,border-color .18s;}
.lc-rewards .lc-reward:hover{transform:translateY(-3px);border-color:#555!important;}
@media(max-width:1024px){.lc-rewards .lc-reward{width:calc(50% - 9px)!important;}}
@media(max-width:767px){.lc-rewards .lc-reward{width:100%!important;}}
.lc-rewicon .elementor-icon{border-width:1px!important;}

/* ---------- BLOG LIST ---------- */
.lc-blogtab .elementor-button{transition:all .15s;}
.lc-blogtab:hover .elementor-button{color:#fff;border-color:#555;}
.lc-blogtab.lc-active .elementor-button{background-color:#06AAB5!important;border-color:#06AAB5!important;color:#0A0A0A!important;font-weight:600;}
/* post cards inherit the site's card language */
.lc-postgrid article.elementor-post,.lc-featured article.elementor-post{
  background:#111214;border:1px solid #2A2A2A;border-radius:14px;overflow:hidden;
  transition:transform .18s,border-color .18s;}
.lc-postgrid article.elementor-post:hover,.lc-featured article.elementor-post:hover{
  transform:translateY(-4px);border-color:#555;}
.lc-postgrid .elementor-post__text,.lc-featured .elementor-post__text{padding:20px 22px 24px;}
.lc-postgrid .elementor-post__title a,.lc-featured .elementor-post__title a{color:#fff;}
.lc-postgrid .elementor-post__title a:hover,.lc-featured .elementor-post__title a:hover{color:#06AAB5;}
.lc-postgrid .elementor-post__read-more,.lc-featured .elementor-post__read-more{letter-spacing:1.2px;}
.lc-featured article.elementor-post{display:flex;flex-wrap:wrap;align-items:stretch;}
@media(min-width:1025px){
  .lc-featured .elementor-post__thumbnail__link{flex:0 0 55%;max-width:55%;}
  .lc-featured .elementor-post__text{flex:1;display:flex;flex-direction:column;justify-content:center;padding:32px 34px;}
  .lc-featured .elementor-post__title{font-size:26px!important;}
}
/* pagination matches the shop pager */
.elementor-pagination{padding-top:34px;display:flex;justify-content:center;gap:10px;flex-wrap:wrap;}
.elementor-pagination .page-numbers{font-family:"Cyborg","Source Sans Pro",sans-serif;text-transform:uppercase;
  letter-spacing:1px;font-size:13px;color:#A6A6A6;border:1px solid #2A2A2A;border-radius:10px;
  padding:8px 14px;min-width:40px;text-align:center;transition:all .15s;}
.elementor-pagination .page-numbers:hover{color:#fff;border-color:#555;}
.elementor-pagination .page-numbers.current{background:#06AAB5;border-color:#06AAB5;color:#0A0A0A;font-weight:600;}

/* ---------- BLOG POST ---------- */
.lc-catchip .elementor-heading-title{background:linear-gradient(135deg,#A8C8CC 0%,#CCA8B8 35%,#C8CCB0 75%,#A8C4CC 100%);
  padding:6px 16px;border-radius:999px;display:inline-block;letter-spacing:1.5px;}
.lc-chipwrap{width:auto!important;flex:0 0 auto;}
.lc-postmeta p{margin:0;}
.lc-articlewrap .lc-wrap{max-width:820px;}
.lc-article p{margin:0 0 20px;line-height:1.75;}
.lc-article .lc-lede{font-size:20px;color:#E4E4E4;line-height:1.6;}
.lc-article h2{font-family:"Cyborg","Source Sans Pro",sans-serif;text-transform:uppercase;color:#fff;
  font-size:24px;letter-spacing:.5px;margin:38px 0 14px;}
.lc-article blockquote{border-left:3px solid #06AAB5;margin:30px 0;padding:6px 0 6px 22px;}
.lc-article blockquote p{color:#FFFFFF;font-size:21px;line-height:1.5;margin:0;}
.lc-article ul{margin:0 0 22px;padding-left:20px;}
.lc-article li{margin-bottom:10px;line-height:1.7;}
.lc-article strong{color:#fff;}
.lc-article a{color:#06AAB5;}
.lc-author{background:#111214;}
.lc-avatar img{border:1px solid #2A2A2A;}
/* mcpwp:block:end name="lc-pages4" */

/* mcpwp:block:start name="lc-hdrgroup" hash="82463fc51853ecc4" */
/* Section header rows: left title group hugs its content so the right-hand
   link/button stays on the same line instead of wrapping below.
   (Elementor containers default to width:100%.) */
.lc-hdrgroup{width:auto!important;flex:1 1 auto;}
/* mcpwp:block:end name="lc-hdrgroup" */

/* mcpwp:block:start name="lc-loginstate" hash="65b12da59c2f1533" */
/* ==========================================================================
   LOGIN-STATE SWAP — one URL, two experiences.
   WordPress core adds "logged-in" to  for any authenticated user, so
   tagging sections .lc-guest / .lc-member is all that's needed. No plugin,
   no JS, no second URL.
   NOTE: this is a PRESENTATION swap — both variants are in the HTML source.
   Never render real member data (balances, names, order history) this way;
   that must come from a membership plugin's server-side shortcodes.
   ========================================================================== */
.lc-member{display:none;}
body.logged-in .lc-member{display:flex;}
body.logged-in .lc-guest{display:none;}

/* ---------- member dashboard ---------- */
.lc-balance{background:#0E0E11!important;box-shadow:inset 0 0 0 1px rgba(237,168,67,.18);}
.lc-bignum .elementor-heading-title{line-height:1;letter-spacing:-1px;}
.lc-progress{background:#0E0E11!important;}
.lc-tierbar .elementor-progress-wrapper{border-radius:10px;overflow:hidden;}
/* Fallback width: Elementor animates the bar only for elements visible at page
   load, so a section hidden at init would render an empty bar. No !important —
   Elementor's inline width still wins whenever its animation does run.
   Keep this % in sync with the widget's Percentage value. */
.lc-tierbar .elementor-progress-bar{width:50%;transition:width 1.4s ease-out;}
.lc-stats .lc-stat{width:calc(25% - 14px)!important;transition:transform .18s,border-color .18s;}
.lc-stats .lc-stat:hover{transform:translateY(-3px);border-color:#555!important;}
@media(max-width:1024px){.lc-stats .lc-stat{width:calc(50% - 9px)!important;}}
@media(max-width:767px){.lc-stats .lc-stat{width:100%!important;}}
/* locked rewards read as unavailable but still legible */
.lc-locked{opacity:.55;}
.lc-locked:hover{opacity:.8;}
/* activity ledger */
.lc-activity .lc-actrow:last-child{border-bottom:0!important;}
.lc-actrow .lc-actdate{width:auto!important;flex:0 0 120px;}
.lc-actrow .lc-actdesc{width:auto!important;flex:1 1 auto;}
.lc-actrow .lc-actpts{width:auto!important;flex:0 0 auto;margin-left:auto;}
.lc-actrow p{margin:0;}
.lc-referral{background:#111214!important;}
.lc-codebox{border:1px dashed #2A2A2A!important;}
.lc-code .elementor-heading-title{letter-spacing:2px;}
/* mcpwp:block:end name="lc-loginstate" */

/* mcpwp:block:start name="lc-tape" hash="6e1d3128b3070416" */
/* ==========================================================================
   LAZERCAT COLOUR TAPE — reusable border/ribbon utility.
   Apply in Elementor: Advanced tab, CSS Classes field (no leading dot).
     lc-tape         standalone strip (drop an empty container, add the class)
     lc-tape-top     colour strip along the top edge of any element
     lc-tape-bottom  colour strip along the bottom edge
     lc-tape-both    strips along BOTH the top and bottom edges
     lc-tape-frame   strip around all four sides
   Size modifiers, combine with any of the above: lc-tape-sm / lc-tape-lg

   SEAMLESSNESS — three things keep the pattern from breaking:
   1. background-repeat:round scales the tile so a WHOLE number of cycles fits
      the run, so nothing is ever cut off mid-square at an end or a corner.
   2. On the frame, the top/bottom runs own all four corners; the left/right
      runs are inset by the tape thickness via transparent top/bottom borders
      plus per-layer background-origin/clip of padding-box. Without this the
      horizontal and vertical tiles overlap at each corner and collide.
   3. The vertical runs are phase-shifted 3 cells so they never start on the
      same colour as the corner square above them.
   Gradient stops are PERCENTAGES so the tile scales with --lc-tape-w.
   ========================================================================== */
:root{
  --lc-tape-w:154px;   /* length of one 7-colour tile */
  --lc-tape-t:22px;    /* strip thickness */
  --lc-tape-ink:#101012;
  --lc-tape-stops:
    #814887 0 12.987%, #101012 12.987% 14.2857%,
    #455FA0 14.2857% 27.2727%, #101012 27.2727% 28.5714%,
    #06AAB5 28.5714% 41.5584%, #101012 41.5584% 42.8571%,
    #87C39A 42.8571% 55.8442%, #101012 55.8442% 57.1429%,
    #EDA843 57.1429% 70.1299%, #101012 70.1299% 71.4286%,
    #E5403C 71.4286% 84.4156%, #101012 84.4156% 85.7143%,
    #AC3052 85.7143% 98.7013%, #101012 98.7013% 100%;
  --lc-tape-x:linear-gradient(90deg,var(--lc-tape-stops));
  --lc-tape-y:linear-gradient(180deg,var(--lc-tape-stops));
  --lc-tape-line:linear-gradient(var(--lc-tape-ink),var(--lc-tape-ink));
  --lc-tape-phase:calc(var(--lc-tape-w) / 7 * 3);
  /* horizontal offset of the bottom run on lc-tape-both, so the two strips
     don't read as one mechanically mirrored copy. Set to 0 for exact sync. */
  --lc-tape-phase-b:calc(var(--lc-tape-w) / 7 * 3);
}
/* size modifiers */
.lc-tape-sm{--lc-tape-w:98px;--lc-tape-t:14px;}
.lc-tape-lg{--lc-tape-w:238px;--lc-tape-t:34px;}

/* 1 — standalone strip */
.lc-tape{
  min-height:var(--lc-tape-t);
  background-image:var(--lc-tape-x);
  background-size:var(--lc-tape-w) 100%;
  background-repeat:round no-repeat;
  border-top:2px solid var(--lc-tape-ink);
  border-bottom:2px solid var(--lc-tape-ink);
}

/* 2 — top / bottom / both edge accents */
.lc-tape-top,.lc-tape-bottom,.lc-tape-both{position:relative;}
.lc-tape-top::before,.lc-tape-both::before,
.lc-tape-bottom::after,.lc-tape-both::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  height:var(--lc-tape-t);
  background-image:var(--lc-tape-x);
  background-size:var(--lc-tape-w) 100%;
  background-repeat:round no-repeat;
  border-top:2px solid var(--lc-tape-ink);
  border-bottom:2px solid var(--lc-tape-ink);
  pointer-events:none;
  z-index:2;
}
.lc-tape-top::before,.lc-tape-both::before{top:0;}
.lc-tape-bottom::after,.lc-tape-both::after{bottom:0;}
/* offset the lower run so the pair doesn't look mirrored */
.lc-tape-both::after{background-position-x:var(--lc-tape-phase-b);}

/* 3 — four-sided frame */
.lc-tape-frame{
  border-top:var(--lc-tape-t) solid transparent;
  border-bottom:var(--lc-tape-t) solid transparent;
  background-image:
    var(--lc-tape-x),var(--lc-tape-x),
    var(--lc-tape-y),var(--lc-tape-y),
    var(--lc-tape-line),var(--lc-tape-line),
    var(--lc-tape-line),var(--lc-tape-line);
  background-position:
    left top,left bottom,
    left var(--lc-tape-phase),right var(--lc-tape-phase),
    left top,left bottom,
    left top,right top;
  background-size:
    var(--lc-tape-w) var(--lc-tape-t),
    var(--lc-tape-w) var(--lc-tape-t),
    var(--lc-tape-t) var(--lc-tape-w),
    var(--lc-tape-t) var(--lc-tape-w),
    100% 2px,100% 2px,
    2px 100%,2px 100%;
  background-repeat:
    round no-repeat,round no-repeat,
    no-repeat round,no-repeat round,
    no-repeat,no-repeat,
    no-repeat,no-repeat;
  background-origin:
    border-box,border-box,
    padding-box,padding-box,
    padding-box,padding-box,
    padding-box,padding-box;
  background-clip:
    border-box,border-box,
    padding-box,padding-box,
    padding-box,padding-box,
    padding-box,padding-box;
  box-shadow:inset 0 0 0 2px var(--lc-tape-ink);
}
/* mcpwp:block:end name="lc-tape" */

/* mcpwp:block:start name="rj-royal-jelly" hash="25ab604d26f683fa" */
/* ==========================================================================
   ROYAL JELLY — /royal-jelly/ layout v2.
   Devices: oversized type overlapping imagery, marquee band, statement block
   with inline product thumbs, edge-bleeding staggered rail, floating pills,
   asymmetric splits. Scoped to .rj-* — cannot touch Lazercat pages.
   Kit CSS escapes "&gt;" — descendant .elementor-kit-5s only.
   ========================================================================== */
.rj-wrap{max-width:1200px;}

/* honeycomb wash on the gradient bands */
.rj-hero,.rj-find,.rj-cta{position:relative;overflow:hidden;}
.rj-hero::after,.rj-find::after,.rj-cta::after{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.15;
  background-image:
    repeating-linear-gradient(60deg,rgba(255,255,255,.5) 0 1px,transparent 1px 46px),
    repeating-linear-gradient(-60deg,rgba(255,255,255,.5) 0 1px,transparent 1px 46px);}
.rj-hero .rj-wrap,.rj-find .rj-wrap,.rj-cta .rj-wrap{position:relative;z-index:1;}

/* ---------- HERO: headline notch the image slides under ---------- */
.rj-bighead .elementor-heading-title{line-height:.86;letter-spacing:-1px;
  text-shadow:0 6px 30px rgba(0,0,0,.35);}
.rj-herohead{width:auto!important;align-self:flex-start;position:relative;z-index:3;
  margin-bottom:-38px!important;background:transparent;}
.rj-herofig{position:relative;z-index:1;}
.rj-heroimg img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;
  box-shadow:0 34px 80px rgba(0,0,0,.45);}
.rj-cap{position:absolute;left:26px;bottom:26px;max-width:430px;z-index:2;
  background:rgba(26,10,38,.72);backdrop-filter:blur(7px);border-radius:22px;}
.rj-badges{position:absolute;right:24px;top:24px;z-index:2;width:auto!important;align-items:flex-end;}
.rj-badge{width:auto!important;flex:0 0 auto;box-shadow:0 8px 22px rgba(0,0,0,.28);}
@media(max-width:1024px){
  .rj-bighead .elementor-heading-title{font-size:78px!important;}
  .rj-herohead{margin-bottom:-22px!important;}
  .rj-badges{position:static;flex-direction:row!important;flex-wrap:wrap;margin-top:14px;
    align-items:flex-start;}
  .rj-cap{position:static;max-width:none;margin-top:14px;}
}
@media(max-width:767px){.rj-bighead .elementor-heading-title{font-size:52px!important;}}

/* ---------- MARQUEE ---------- */
.rj-marquee{overflow:hidden;}
.rj-mqtrack{width:max-content!important;flex-wrap:nowrap!important;
  animation:rj-scroll 38s linear infinite;}
.rj-tickitem{width:auto!important;flex:0 0 auto;white-space:nowrap;}
.rj-tickitem .elementor-heading-title{white-space:nowrap;letter-spacing:1px;}
@keyframes rj-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.rj-mqtrack{animation:none;}}

/* ---------- STATEMENT block with inline product thumbs ---------- */
.rj-statewrap{position:relative;}
.rj-statement{position:relative;box-shadow:inset 0 0 0 1px #4A2A63;}
.rj-statement-t p{margin:0;line-height:1.18;letter-spacing:-.5px;
  font-family:"Anton",sans-serif;text-transform:uppercase;}
.rj-statement-t .rj-inline{display:inline-block;width:1.35em;height:.82em;object-fit:cover;
  border-radius:9px;vertical-align:-.06em;margin:0 .14em;
  box-shadow:0 4px 14px rgba(0,0,0,.4);}
.rj-floatpill{width:auto!important;flex:0 0 auto;position:absolute;right:8%;bottom:-20px;z-index:3;
  box-shadow:0 10px 26px rgba(0,0,0,.34);}
@media(max-width:1024px){
  .rj-statement{padding:44px 26px!important;border-radius:32px!important;}
  .rj-statement-t p{font-size:27px!important;}
  .rj-floatpill{right:auto;left:50%;transform:translateX(-50%);}
}

/* ---------- STORY: image bleeding off the left edge ---------- */
.rj-storysec{overflow:hidden;}
.rj-bleedL{margin-left:calc((100vw - min(1200px,100vw - 80px)) / -2)!important;
  padding-left:0!important;}
.rj-bleedimg img{display:block;width:100%;aspect-ratio:5/4;object-fit:cover;
  border-top-left-radius:0!important;border-bottom-left-radius:0!important;
  box-shadow:0 26px 60px rgba(0,0,0,.45);}
@media(max-width:1024px){
  .rj-bleedL{margin-left:0!important;}
  .rj-bleedimg img{border-radius:28px!important;}
  .rj-storytext{padding-left:0!important;}
}

/* ---------- PILLARS: staggered pill rows ---------- */
.rj-pillstack .rj-pillrow{transition:transform .2s,border-color .2s;}
.rj-pillstack .rj-pillrow:nth-child(2){margin-left:7%;}
.rj-pillstack .rj-pillrow:nth-child(3){margin-left:14%;}
.rj-pillstack .rj-pillrow:hover{transform:translateX(6px);border-color:#7A4A9E!important;}
.rj-num{width:auto!important;flex:0 0 auto;}
.rj-num .elementor-heading-title{line-height:1;}
@media(max-width:1024px){
  .rj-pillstack .rj-pillrow:nth-child(2),.rj-pillstack .rj-pillrow:nth-child(3){margin-left:0;}
  .rj-pillstack .rj-pillrow{border-radius:26px!important;}
}

/* ---------- LINEUP: edge-bleeding, staggered, snap-scrolling rail ---------- */
.rj-lineup{overflow:hidden;}
.rj-rail{max-width:1200px;margin:0 auto;overflow-x:auto;overflow-y:visible;
  scroll-snap-type:x mandatory;padding:26px 0 34px!important;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
  /* let the rail run past the right edge of the wrap so cards bleed off */
  margin-right:calc((100vw - min(1200px,100vw - 80px)) / -2)!important;}
.rj-rail::-webkit-scrollbar{display:none;}
.rj-rail .rj-railcard{flex:0 0 330px;width:330px!important;scroll-snap-align:start;
  transition:transform .2s,border-color .2s;}
.rj-rail .rj-railcard:nth-child(even){transform:translateY(34px);}
.rj-rail .rj-railcard:hover{border-color:#7A4A9E!important;}
.rj-rail .rj-railcard:nth-child(even):hover{transform:translateY(28px);}
.rj-rail .rj-railcard:nth-child(odd):hover{transform:translateY(-6px);}
.rj-railfig{background:#1E0F2E;border-radius:20px;overflow:hidden;}
.rj-railimg img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .5s;}
.rj-railcard:hover .rj-railimg img{transform:scale(1.06);}
.rj-railsoon{background:transparent!important;}
.rj-dragdot{width:92px!important;flex:0 0 auto;box-shadow:0 10px 26px rgba(0,0,0,.3);}
@media(max-width:1024px){
  .rj-rail .rj-railcard:nth-child(even){transform:none;}
  .rj-rail{margin-right:0!important;}
}

/* ---------- FINDER: split, staggered shop pills ---------- */
.rj-shopstack .rj-shop{transition:transform .18s,border-color .18s;}
.rj-shopstack .rj-shop:nth-child(odd){margin-left:5%;}
.rj-shopstack .rj-shop:hover{transform:translateX(6px);border-color:#B478D8!important;}
.rj-shop p{margin:0;}
.rj-dist{width:auto!important;flex:0 0 auto;}
.rj-dirbtn .elementor-button{padding:9px 20px!important;}
@media(max-width:1024px){.rj-shopstack .rj-shop:nth-child(odd){margin-left:0;}}
.rj-finder input[type=text]{background-color:transparent!important;color:#FFF6E8!important;
  border:2px solid rgba(250,205,163,.34)!important;border-radius:999px!important;
  padding:16px 24px!important;font-family:"Jost",sans-serif!important;}
.rj-finder input::placeholder{color:rgba(255,246,232,.55)!important;}
.rj-finder button{border-radius:999px!important;font-family:"Jost",sans-serif!important;
  text-transform:uppercase;letter-spacing:2px;font-weight:600;padding:16px 26px!important;
  transition:transform .18s,box-shadow .18s;}
.rj-finder button:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.3);}

/* ---------- pill buttons ---------- */
.rj-btn .elementor-button{transition:transform .18s,box-shadow .18s,background-color .18s;}
.rj-btn:hover .elementor-button{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.32);}

/* ---------- CTA ---------- */
.rj-ctamarkwrap{position:relative;z-index:2;margin-bottom:-14px!important;}
.rj-cta-h .elementor-heading-title{line-height:.95;letter-spacing:-1px;}
@media(max-width:767px){.rj-cta-h .elementor-heading-title{font-size:34px!important;}}
.rj-hdrgroup{width:auto!important;flex:1 1 auto;}
/* mcpwp:block:end name="rj-royal-jelly" */

/* mcpwp:block:start name="rj-finder-align" hash="2a7b409a85df7577" */
/* Royal Jelly finder: vertically centre the ZIP field and the Find It button.
   Elementor's form row aligns cells to the top, which left the shorter button
   sitting ~12px low next to the taller pill input. */
.rj-finder .elementor-form-fields-wrapper{align-items:center;}
.rj-finder .elementor-field-group{margin-bottom:0;}

/* Top-align the two finder columns. The shop stack is much taller than the
   copy, so any centring drops the heading toward the bottom of the band.
   Needs !important: Elementor writes align-items on the element itself. */
.rj-findrow{align-items:flex-start!important;}
@media(min-width:1025px){
  .rj-findleft{position:sticky;top:110px;}
}

/* The staggered pill rows deliberately bleed past the right edge; clip them at
   the section so they don't add a horizontal scrollbar to the whole page. */
.rj-pillsec{overflow:hidden;}
/* mcpwp:block:end name="rj-finder-align" */

/* mcpwp:block:start name="lc-genetics-items" hash="774d886110de06dd" */
/* Generated per-strain rules — thumbnail by primary product format, plus the
   format list printed on each closed row. Grouped with :is() to keep the kit
   CSS compact (52 strains in 3 + 6 rules).
   Index-based: if strains are added/reordered, re-run gen_genetics.py. */
.lc-strains .elementor-accordion-item:is(:nth-child(1),:nth-child(2),:nth-child(3),:nth-child(7),:nth-child(10),:nth-child(11),:nth-child(16),:nth-child(17),:nth-child(18),:nth-child(24),:nth-child(26),:nth-child(27),:nth-child(31),:nth-child(35),:nth-child(37),:nth-child(39),:nth-child(41),:nth-child(45)) .elementor-tab-title::before{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-strain-rosin.jpg)}
.lc-strains .elementor-accordion-item:is(:nth-child(4),:nth-child(5),:nth-child(6),:nth-child(8),:nth-child(9),:nth-child(13),:nth-child(14),:nth-child(15),:nth-child(19),:nth-child(20),:nth-child(21),:nth-child(22),:nth-child(23),:nth-child(25),:nth-child(28),:nth-child(29),:nth-child(30),:nth-child(32),:nth-child(33),:nth-child(34),:nth-child(36),:nth-child(38),:nth-child(40),:nth-child(42),:nth-child(43),:nth-child(44),:nth-child(46),:nth-child(47),:nth-child(48),:nth-child(49),:nth-child(50),:nth-child(51),:nth-child(52)) .elementor-tab-title::before{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-strain-badder.jpg)}
.lc-strains .elementor-accordion-item:is(:nth-child(12)) .elementor-tab-title::before{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-strain-cart.jpg)}
.lc-strains .elementor-accordion-item:is(:nth-child(1),:nth-child(16),:nth-child(17),:nth-child(18),:nth-child(24),:nth-child(31),:nth-child(37),:nth-child(39)) .elementor-tab-title::after{content:"Rosin · Badder · Cartridges · All-In-Ones"}
.lc-strains .elementor-accordion-item:is(:nth-child(2),:nth-child(10),:nth-child(26),:nth-child(27),:nth-child(35),:nth-child(41)) .elementor-tab-title::after{content:"Rosin · Badder"}
.lc-strains .elementor-accordion-item:is(:nth-child(3),:nth-child(11)) .elementor-tab-title::after{content:"Rosin"}
.lc-strains .elementor-accordion-item:is(:nth-child(4),:nth-child(5),:nth-child(6),:nth-child(8),:nth-child(9),:nth-child(13),:nth-child(14),:nth-child(15),:nth-child(19),:nth-child(20),:nth-child(21),:nth-child(22),:nth-child(23),:nth-child(25),:nth-child(28),:nth-child(29),:nth-child(30),:nth-child(32),:nth-child(33),:nth-child(34),:nth-child(36),:nth-child(38),:nth-child(40),:nth-child(42),:nth-child(43),:nth-child(44),:nth-child(46),:nth-child(47),:nth-child(48),:nth-child(49),:nth-child(50),:nth-child(51),:nth-child(52)) .elementor-tab-title::after{content:"Badder · Cartridges · All-In-Ones"}
.lc-strains .elementor-accordion-item:is(:nth-child(7),:nth-child(45)) .elementor-tab-title::after{content:"Rosin · Badder · Cartridges · All-In-Ones · Edibles"}
.lc-strains .elementor-accordion-item:is(:nth-child(12)) .elementor-tab-title::after{content:"Cartridges · All-In-Ones · Edibles"}
/* mcpwp:block:end name="lc-genetics-items" */

/* mcpwp:block:start name="lc-genetics" hash="302dabdc312cb63a" */
/* ==========================================================================
   LAZERCAT — /genetics/ strain library.
   Native Elementor accordion. Each closed row shows a product-category
   thumbnail (::before) and the formats the strain comes in (::after), both
   injected per item by the generated lc-genetics-items block.
   Kit CSS escapes "&gt;" — descendant .elementor-kit-5s only.
   ========================================================================== */
.lc-strains .elementor-accordion-item{background:#111214;border:1px solid #2A2A2A!important;
  border-radius:14px;margin-bottom:10px;overflow:hidden;transition:border-color .18s;}
.lc-strains .elementor-accordion-item:hover{border-color:#555!important;}

/* closed row: [thumb] [name] [formats] .......... [icon] */
.lc-strains .elementor-tab-title{display:flex;align-items:center;gap:16px;padding:14px 20px!important;}
.lc-strains .elementor-tab-title::before{
  content:"";order:1;flex:0 0 auto;width:54px;height:54px;border-radius:11px;
  background-size:cover;background-position:center;background-color:#0A0A0A;
  box-shadow:inset 0 0 0 1px #2A2A2A;}
.lc-strains .elementor-tab-title a,
.lc-strains .elementor-tab-title .elementor-accordion-title{order:2;flex:0 0 auto;}
.lc-strains .elementor-tab-title::after{
  order:3;flex:1 1 auto;color:#7A7A7A;font-family:"Source Sans Pro",sans-serif;
  font-size:12.5px;letter-spacing:.4px;text-transform:none;font-weight:400;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lc-strains .elementor-accordion-icon{order:4;flex:0 0 auto;margin-left:auto;}
.lc-strains .elementor-tab-title.elementor-active{background:#17181C;}

/* open panel: label / value spec rows */
.lc-strains .elementor-tab-content{border-top:1px solid #2A2A2A!important;
  padding:6px 20px 20px 90px!important;}
.lc-sg{display:flex;flex-direction:column;}
.lc-srow{display:flex;flex-wrap:wrap;gap:10px;padding:11px 0;border-bottom:1px solid #1C1C1F;}
.lc-srow:last-child{border-bottom:0;}
.lc-sk{flex:0 0 150px;color:#7A7A7A;font-size:12px;letter-spacing:1.4px;text-transform:uppercase;
  font-family:"Cyborg","Source Sans Pro",sans-serif;}
.lc-sv{flex:1 1 auto;color:#E4E4E4;}
/* pending data must read as clearly unconfirmed, never as fact */
.lc-tbd{color:#8A7A55!important;font-style:italic;}
.lc-tbd::before{content:"⋯ ";}

@media(max-width:767px){
  /* the 64px display H1 clips at phone widths */
  .lc-genhero .elementor-heading-title{font-size:40px!important;}
  .lc-strains .elementor-tab-title::after{display:none;}
  .lc-strains .elementor-tab-title{gap:12px;padding:12px 14px!important;}
  .lc-strains .elementor-tab-title::before{width:44px;height:44px;}
  .lc-strains .elementor-tab-content{padding:6px 16px 18px 16px!important;}
  .lc-sk{flex:0 0 100%;}
}

/* stat strip */
.lc-stats .lc-stat{width:calc(25% - 14px)!important;transition:transform .18s,border-color .18s;}
.lc-stats .lc-stat:hover{transform:translateY(-3px);border-color:#555!important;}
@media(max-width:1024px){.lc-stats .lc-stat{width:calc(50% - 9px)!important;}}
@media(max-width:767px){.lc-stats .lc-stat{width:100%!important;}}
.lc-stat p{margin:0;}
.lc-note{max-width:430px;}
/* mcpwp:block:end name="lc-genetics" */

/* mcpwp:block:start name="lc-brandkit" hash="ce7eec1e9fef93ee" */
/* ==========================================================================
   LAZERCAT BRAND KIT — reusable utilities built from the team's own artwork.
   Apply in Elementor: Advanced tab, CSS Classes field (no leading dot).
   Kit CSS escapes the child combinator — descendant .elementor-kit-5s only.

   Tape colours sampled from the source PNGs so CSS tape matches the artwork:
   #7E4884 #A83054 #D84242 #42609C #00A8B4 #84C096 #EAA842 on #1E1E1E ink.
   ========================================================================== */
:root{
  --lc-hexclip:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);      /* pointy-top */
  --lc-hexclip-flat:polygon(25% 0%,75% 0%,100% 50%,75% 100%,25% 100%,0% 50%); /* flat-top   */
}

/* ===== 1. HEX PHOTO FRAME — drop any image into the tape hexagon ==========
   Elementor: container.lc-hexshot  +  one Image widget inside.
   Default frame is the SLIM tape band. Add lc-hexshot-bold for the heavy one.
   Hole geometry is measured from the artwork, so the image lands exactly.
   NOTE: deliberately no width here — that would override Elementor's own
   width control and force every frame to full width. */
:root{
  --lc-hexratio:1000/1155;
  --lc-hexinset:4.76%;   /* frame edge -&gt; inner hole */
  --lc-hexhole:90.48%;   /* inner hole as % of the frame box */
  --lc-hexframe:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-frame-slim-div2.png);
}
.lc-hexshot{position:relative;aspect-ratio:var(--lc-hexratio);}
.lc-hexshot::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:var(--lc-hexframe) center/100% 100% no-repeat;}
.lc-hexshot .elementor-widget-image,
.lc-hexshot .lc-hexshot-img{
  position:absolute;left:var(--lc-hexinset);top:var(--lc-hexinset);
  width:var(--lc-hexhole);height:var(--lc-hexhole);z-index:1;margin:0;
  clip-path:var(--lc-hexclip);overflow:hidden;}
.lc-hexshot .elementor-widget-container,
.lc-hexshot .elementor-image,
.lc-hexshot figure{height:100%;width:100%;margin:0;}
.lc-hexshot img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s ease;}
.lc-hexshot:hover img{transform:scale(1.06);}

/* even slimmer hairline band */
.lc-hexshot-hair{--lc-hexinset:3.29%;--lc-hexhole:93.42%;
  --lc-hexframe:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-frame-xslim-div2.png);}
/* the original heavy band from the source artwork */
.lc-hexshot-bold{--lc-hexratio:1000/1154;--lc-hexinset:13.4%;--lc-hexhole:73.2%;
  --lc-hexframe:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-frame-div2.png);}

/* hexagon-clipped image with NO frame — for tight grids */
.lc-hexclip img{clip-path:var(--lc-hexclip);object-fit:cover;display:block;width:100%;}
.lc-hexclip-flat img{clip-path:var(--lc-hexclip-flat);object-fit:cover;display:block;width:100%;}

/* ===== 2. TAPE BORDER — top / bottom rule ================================ */
:root{
  /* Sized off the rendered hexshot frame rather than by eye: at a 355px frame
     its tape band measures 16.9px with 34.2px segments — 2:1, and a 239px tile
     for seven colours. These are those numbers. */
  --lc-tape-w:239px;    /* one 7-colour tile */
  --lc-tape-t:17px;     /* thickness */
  --lc-tape-ink:#1E1E1E;
  --lc-tape-ink-w:1px;  /* the rules top and bottom of the run */
  --lc-tape-div-r:.12;  /* black dividers = 12% of tape thickness, same ratio as the hex art */
}
.lc-tape-top,.lc-tape-bottom,.lc-tape-both{position:relative;}
.lc-tape-top::before,.lc-tape-both::before,
.lc-tape-bottom::after,.lc-tape-both::after{
  content:"";position:absolute;left:0;right:0;height:var(--lc-tape-t);
  --lc-tape-div:calc(var(--lc-tape-t) * var(--lc-tape-div-r));
  background-image:linear-gradient(90deg,
    #7E4884 0.0000% calc(14.2857% - var(--lc-tape-div)),var(--lc-tape-ink) calc(14.2857% - var(--lc-tape-div)) 14.2857%,
    #42609C 14.2857% calc(28.5714% - var(--lc-tape-div)),var(--lc-tape-ink) calc(28.5714% - var(--lc-tape-div)) 28.5714%,
    #00A8B4 28.5714% calc(42.8571% - var(--lc-tape-div)),var(--lc-tape-ink) calc(42.8571% - var(--lc-tape-div)) 42.8571%,
    #84C096 42.8571% calc(57.1429% - var(--lc-tape-div)),var(--lc-tape-ink) calc(57.1429% - var(--lc-tape-div)) 57.1429%,
    #EAA842 57.1429% calc(71.4286% - var(--lc-tape-div)),var(--lc-tape-ink) calc(71.4286% - var(--lc-tape-div)) 71.4286%,
    #D84242 71.4286% calc(85.7143% - var(--lc-tape-div)),var(--lc-tape-ink) calc(85.7143% - var(--lc-tape-div)) 85.7143%,
    #A83054 85.7143% calc(100.0000% - var(--lc-tape-div)),var(--lc-tape-ink) calc(100.0000% - var(--lc-tape-div)) 100.0000%);
  background-size:var(--lc-tape-w) 100%;
  background-repeat:round;          /* whole tiles only — no clipped segment */
  border-top:var(--lc-tape-ink-w) solid var(--lc-tape-ink);
  border-bottom:var(--lc-tape-ink-w) solid var(--lc-tape-ink);
  pointer-events:none;z-index:3;}
.lc-tape-top::before,.lc-tape-both::before{top:0;}
.lc-tape-bottom::after,.lc-tape-both::after{bottom:0;}
/* all of these hold the frame's 2:1 segment proportion */
.lc-tape-hair{--lc-tape-t:10px;--lc-tape-w:141px;}
.lc-tape-thin{--lc-tape-t:13px;--lc-tape-w:183px;}
.lc-tape-thick{--lc-tape-t:24px;--lc-tape-w:338px;}
.lc-tape-chunky{--lc-tape-t:32px;--lc-tape-w:450px;}
/* the pre-slim look, square segments and heavier rules */
.lc-tape-original{--lc-tape-t:22px;--lc-tape-w:154px;--lc-tape-ink-w:2px;}

/* ===== 3. SECTION BACKGROUNDS — the big hex artwork, held back ==========
   Sized and placed with variables, and able to bleed outside its section.

     --lc-bg-op     opacity            (.16)      lc-bg-faint / lc-bg-strong
     --lc-bg-size   background-size    (cover)    lc-bg-contain / -wide / -huge
     --lc-bg-pos    background-position(center)   lc-bg-at-top / -bottom / -left / -right
     --lc-bg-amt    how far it bleeds  (14%)      lc-bg-bleed-sm / -lg
     --lc-bg-t/r/b/l  per-edge offset  (0px)      negative pushes that edge outward

   To bleed, add lc-bg-bleed (all sides), lc-bg-bleed-x or lc-bg-bleed-y.
   Overflowing art paints behind the NEXT section's background, so if the
   neighbour is opaque add lc-bg-over to lift this section above it. */
.lc-bg-tunnel,.lc-bg-hexmenu{position:relative;isolation:isolate;
  --lc-bg-t:0px;--lc-bg-r:0px;--lc-bg-b:0px;--lc-bg-l:0px;}
.lc-bg-tunnel::before,.lc-bg-hexmenu::before{
  content:"";position:absolute;z-index:-1;pointer-events:none;
  /* Elementor's own .e-con::before sets width/height:100%. With those plus all
     four offsets the box is over-constrained, so right/bottom get dropped and a
     bleed just slides the art up-left instead of growing it. auto hands the
     sizing back to the offsets. */
  width:auto;height:auto;
  top:var(--lc-bg-t);right:var(--lc-bg-r);bottom:var(--lc-bg-b);left:var(--lc-bg-l);
  background-position:var(--lc-bg-pos,center);background-repeat:no-repeat;
  background-size:var(--lc-bg-size,cover);
  opacity:var(--lc-bg-op,.16);}
.lc-bg-tunnel::before{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-bg-tunnel.png);}
.lc-bg-hexmenu::before{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-bg-hexmenu-div2.png);}

/* opacity */
.lc-bg-strong{--lc-bg-op:.42;}
.lc-bg-faint{--lc-bg-op:.07;}
.lc-bg-solid{--lc-bg-op:1;}

/* size */
.lc-bg-contain{--lc-bg-size:contain;}
.lc-bg-cover{--lc-bg-size:cover;}
.lc-bg-wide{--lc-bg-size:140% auto;}
.lc-bg-huge{--lc-bg-size:200% auto;}

/* placement */
.lc-bg-at-top{--lc-bg-pos:center top;}
.lc-bg-at-bottom{--lc-bg-pos:center bottom;}
.lc-bg-at-left{--lc-bg-pos:left center;}
.lc-bg-at-right{--lc-bg-pos:right center;}

/* bleed. overflow is forced because letting the art escape is the whole point
   of the class — Elementor's own overflow control would otherwise clip it. */
.lc-bg-bleed,.lc-bg-bleed-x,.lc-bg-bleed-y{overflow:visible!important;}
.lc-bg-bleed{--lc-bg-t:calc(-1 * var(--lc-bg-amt,14%));--lc-bg-b:calc(-1 * var(--lc-bg-amt,14%));
             --lc-bg-l:calc(-1 * var(--lc-bg-amt,14%));--lc-bg-r:calc(-1 * var(--lc-bg-amt,14%));}
.lc-bg-bleed-x{--lc-bg-l:calc(-1 * var(--lc-bg-amt,14%));--lc-bg-r:calc(-1 * var(--lc-bg-amt,14%));}
.lc-bg-bleed-y{--lc-bg-t:calc(-1 * var(--lc-bg-amt,14%));--lc-bg-b:calc(-1 * var(--lc-bg-amt,14%));}
.lc-bg-bleed-sm{--lc-bg-amt:7%;}
.lc-bg-bleed-lg{--lc-bg-amt:28%;}
.lc-bg-over{z-index:1;}

/* ===== 4. DECOR PIECES — drop-in accents ================================ */
.lc-decor{background-position:center;background-repeat:no-repeat;background-size:contain;
  pointer-events:none;}
.lc-hex-cluster{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-cluster-single-v2-div2.png);aspect-ratio:1283/1276;}
.lc-hex-cluster-double{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-cluster-double-v2-div2.png);aspect-ratio:1283/1276;}
.lc-hex-stack{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-stack-v4-div2.png);aspect-ratio:700/1919;}
.lc-hex-row{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-row-v4-div2.png);aspect-ratio:1530/559;}
.lc-mountains{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-mountains-v2.png);aspect-ratio:1400/557;}
.lc-wordmark{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-wordmark.png);aspect-ratio:1000/116;}
.lc-logo-badge{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-logo-badge.png);aspect-ratio:900/1039;}
.lc-medallion-row{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-medallion-row.png);aspect-ratio:1400/426;}

/* mascot — floats gently */
.lc-mascot{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-mascot.png);
  aspect-ratio:521/774;background-size:contain;background-repeat:no-repeat;background-position:center;
  animation:lc-float 6s ease-in-out infinite;}
@keyframes lc-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}

/* medallion — slow spin */
.lc-medallion{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-medallion.png);
  aspect-ratio:1/1;background-size:contain;background-repeat:no-repeat;background-position:center;
  animation:lc-spin 26s linear infinite;}
@keyframes lc-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.lc-mascot,.lc-medallion{animation:none;}}

/* watermark — the mark as a subtle embellishment */
.lc-watermark{position:relative;isolation:isolate;}
.lc-watermark::before{content:"";position:absolute;z-index:-1;pointer-events:none;
  width:var(--lc-wm,420px);aspect-ratio:900/1039;
  right:var(--lc-wm-x,-90px);bottom:var(--lc-wm-y,-70px);opacity:var(--lc-wm-op,.08);
  background:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-logo-badge.png) center/contain no-repeat;}

/* ===== 5. HEX BADGES — open tape rings, no black fill =================== */
.lc-badge-1{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-badge-tall-open-div2.png);aspect-ratio:596/1141;}
.lc-badge-2{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-badge-ring-open-div2.png);aspect-ratio:596/801;}
.lc-badge-3{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-badge-3-div2.png);aspect-ratio:600/520;}

/* ===== 6. MULTI-SLOT PHOTO ART ==========================================
   Composite hex artwork with real photos dropped into every opening.
   Elementor: container.lc-hexart.lc-art-
              + one Image widget per slot, classed lc-slot1 / lc-slot2 / lc-slot3.
   Each slot box is exactly its hexagon's bounding box and the hexagon clip
   lives on the wrapper with overflow:hidden — so a photo fills its hexagon
   edge to edge and can never spill outside it, hover zoom included. */
.lc-hexart{position:relative;}
.lc-hexart::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background-position:center;background-size:100% 100%;background-repeat:no-repeat;}
/* The hexagon clip lives on the inner wrapper, not the slot itself. That keeps
   the photo contained while leaving the slot free to carry its own tape ring
   that overhangs the photo — which is what lets each hexagon animate as one
   piece instead of the artwork being a single flat overlay for all three. */
.lc-hexart .elementor-widget-image{position:absolute;z-index:1;margin:0;}
/* Elementor containers are position:relative, so a grid/column wrapper dropped
   between lc-hexart and the images would hijack the positioning reference and
   every photo would land in the corner of its own column. Neutralise them: the
   slots then measure against lc-hexart no matter how they are nested, and a
   boxed lc-hexart container works the same as a full-width one. */
.lc-hexart .e-con,.lc-hexart .e-con-inner{position:static;}
.lc-hexart .elementor-widget-image .elementor-widget-container{position:relative;
  height:100%;width:100%;margin:0;overflow:hidden;clip-path:var(--lc-hexclip);}
.lc-hexart .elementor-image,
.lc-hexart figure{height:100%;width:100%;margin:0;}
.lc-hexart .elementor-widget-image img{width:100%!important;height:100%!important;
  max-width:none!important;object-fit:cover;display:block;
  transition:transform .5s ease;}
.lc-hexart .elementor-widget-image:hover img{transform:scale(1.06);}

/* --- row divider: photo hexagons overlapped by slim tape hexagons -------- */
.lc-art-row{aspect-ratio:1530/559;}
.lc-art-row::after{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-row-v4-open-div2.png);}
.lc-art-row .lc-slot1{left:0.523%;top:20.048%;width:18.954%;height:59.904%;}
.lc-art-row .lc-slot2{left:34.641%;top:1.457%;width:30.719%;height:97.086%;}
.lc-art-row .lc-slot3{left:80.523%;top:20.048%;width:18.954%;height:59.904%;}

/* --- vertical stack: photo in the centre hexagon ------------------------- */
.lc-art-stack{aspect-ratio:700/1919;}
.lc-art-stack::after{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-stack-v4-open-div2.png);}
.lc-art-stack .lc-slot1{left:1.429%;top:29.547%;width:97.143%;height:40.917%;}

/* --- cluster: flat-top hexagons with clear space between them ----------- */
.lc-art-cluster,.lc-art-cluster-double{aspect-ratio:1283/1276;}
.lc-art-cluster .elementor-widget-image .elementor-widget-container,
.lc-art-cluster-double .elementor-widget-image .elementor-widget-container{clip-path:var(--lc-hexclip-flat);}

/* one slim ring per hexagon — the largest photo openings */
/* no composite overlay — each hexagon wears its own ring */
.lc-art-cluster::after{content:none;}
.lc-art-cluster .elementor-widget-image::after{
  content:"";position:absolute;inset:-6.18%;z-index:2;pointer-events:none;
  background:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-ring-div2.png) center/100% 100% no-repeat;}
.lc-art-cluster .lc-slot1{left:3.780%;top:5.121%;width:48.558%;height:42.283%;}
.lc-art-cluster .lc-slot2{left:47.670%;top:30.600%;width:48.558%;height:42.283%;}
.lc-art-cluster .lc-slot3{left:3.780%;top:56.078%;width:48.558%;height:42.283%;}

/* Mirrored, for when the cluster sits on the other side of the page. The ring
   is mirrored in CSS rather than re-exported, and the slots swap columns, so
   the arrangement reads top-right / middle-left / bottom-right.
   Every .elementor-kit-5 here is a descendant .elementor-kit-5, so the class works on the art
   container OR on an lc-hexsteps wrapper around it — put it on the wrapper and
   the captions travel with their hexagons. */
.lc-art-cluster-flip .elementor-widget-image::after{transform:scaleX(-1);}
.lc-art-cluster-flip .lc-slot1{left:47.662%;}
.lc-art-cluster-flip .lc-slot2{left:3.772%;}
.lc-art-cluster-flip .lc-slot3{left:47.662%;}

/* two concentric rings per hexagon — same layout, smaller openings */
.lc-art-cluster-double::after{background-image:url(https://lazercat.pufdev.com/wp-content/uploads/2026/09/lc-hex-cluster-double-v2-div2.png);}
.lc-art-cluster-double .lc-slot1{left:9.119%;top:9.770%;width:37.880%;height:32.985%;}
.lc-art-cluster-double .lc-slot2{left:53.009%;top:35.249%;width:37.880%;height:32.985%;}
.lc-art-cluster-double .lc-slot3{left:9.119%;top:60.727%;width:37.880%;height:32.985%;}

/* ===== 7. LABELLED CLUSTER — a captioned 3-step process ==================
   Elementor:
     container.lc-hexsteps
       |- container.lc-hexart.lc-art-cluster   (3 Image widgets: lc-slot1/2/3)
       |- heading.lc-step1   e.g. GROW
       |- heading.lc-step2   e.g. WASH
       |- heading.lc-step3   e.g. PRESS

   Three placements, swapped with one class on the wrapper:
     (default)         split — left / right / left, beside each hexagon
     lc-steps-right    all three stacked in a right-hand column
     lc-steps-inside   inside each hexagon, near the bottom of the photo

   padding is forced off: the labels measure against this wrapper, the art sits
   inside its content box, and any padding here would offset the two. Put the
   breathing room on the parent section instead. */
/* No width here on purpose. A hard width:100% beats Elementor's own width
   control, which silently disables the slider — size the cluster from the
   wrapper's Width control and everything inside scales with it. */
.lc-hexsteps{position:relative;padding:0;--lc-step-w:22%;--lc-step-gap:3%;}
.lc-hexsteps .lc-hexart{margin-inline:auto;}
.lc-hexsteps .lc-step1,.lc-hexsteps .lc-step2,.lc-hexsteps .lc-step3{
  position:absolute;z-index:3;margin:0;transform:translateY(-50%);}

/* --- default: split, one label beside each hexagon on its outer side ----- */
.lc-hexsteps .lc-hexart{width:calc(100% - 2*var(--lc-step-w));}
.lc-hexsteps .lc-step1{left:0;top:26.26%;width:var(--lc-step-w);text-align:right;padding-right:var(--lc-step-gap);}
.lc-hexsteps .lc-step2{right:0;top:51.74%;width:var(--lc-step-w);text-align:left;padding-left:var(--lc-step-gap);}
.lc-hexsteps .lc-step3{left:0;top:77.22%;width:var(--lc-step-w);text-align:right;padding-right:var(--lc-step-gap);}
.lc-hexsteps .lc-step1 .elementor-heading-title,
.lc-hexsteps .lc-step3 .elementor-heading-title{text-align:right;}
.lc-hexsteps .lc-step2 .elementor-heading-title{text-align:left;}

/* --- lc-steps-right: all three in one right-hand column ------------------ */
.lc-steps-right .lc-hexart{width:calc(100% - var(--lc-step-w));margin-inline:0 auto;}
.lc-steps-right .lc-step1,.lc-steps-right .lc-step2,.lc-steps-right .lc-step3{
  left:auto;right:0;width:var(--lc-step-w);text-align:left;
  padding-left:var(--lc-step-gap);padding-right:0;}
.lc-steps-right .lc-step1 .elementor-heading-title,
.lc-steps-right .lc-step2 .elementor-heading-title,
.lc-steps-right .lc-step3 .elementor-heading-title{text-align:left;}

/* --- lc-steps-inside: captions sitting low inside each hexagon ----------- */
.lc-steps-inside{--lc-step-y:.78;}
.lc-steps-inside .lc-hexart{width:100%;}
.lc-steps-inside .lc-step1,.lc-steps-inside .lc-step2,.lc-steps-inside .lc-step3{
  width:48.558%;padding:0;text-align:center;}
.lc-steps-inside .lc-step1 .elementor-heading-title,
.lc-steps-inside .lc-step2 .elementor-heading-title,
.lc-steps-inside .lc-step3 .elementor-heading-title{text-align:center;}
.lc-steps-inside .lc-step1{left:3.780%;top:calc(5.121% + 42.283% * var(--lc-step-y));}
.lc-steps-inside .lc-step2{left:47.670%;right:auto;top:calc(30.600% + 42.283% * var(--lc-step-y));}
.lc-steps-inside .lc-step3{left:3.780%;top:calc(56.078% + 42.283% * var(--lc-step-y));}
/* scrim so the caption stays readable on any photo. The slot wrapper is
   hexagon-clipped with overflow:hidden, so the gradient is clipped too. */
.lc-steps-inside .elementor-widget-image .elementor-widget-container::after{content:"";position:absolute;
  left:0;right:0;bottom:0;height:var(--lc-step-scrim,44%);z-index:1;pointer-events:none;
  background:linear-gradient(to top,rgba(0,0,0,.85),rgba(0,0,0,.45) 45%,rgba(0,0,0,0));}

.lc-steps-wide{--lc-step-w:28%;}
.lc-steps-narrow{--lc-step-w:16%;}
/* narrower columns need proportionally more room for the caption or it wraps */
@media(max-width:1200px){.lc-hexsteps{--lc-step-w:26%;}}
@media(max-width:767px){.lc-hexsteps{--lc-step-w:28%;--lc-step-gap:2%;}}

@media(prefers-reduced-motion:reduce){.lc-hexart img,.lc-hexshot img{transition:none;}}

/* keep decorative art from creating horizontal scrollbars when it bleeds */
.lc-clip{overflow:hidden;}

/* ===== 8. DRIP EDGE — a section whose own background drips onto the next ===
   Replaces an Elementor shape divider, which can only ever be a flat colour.
   Here the shape is a MASK on the section itself, so whatever that section is
   painted with — gradient, texture, image — is what drips. Seamless by
   construction: it is literally the same background, not a matched copy.

   The shape is drawn to tile: every seam lands on flat band, never mid-drip,
   and `round` scales the tile so a whole number fits the width. Each drip is a
   narrow neck opening into a round bulb, which is what reads as a paint drip
   rather than a teardrop.

   Elementor: put lc-drip on the UPPER section.
     --lc-drip-h        how far the drips hang      (54px)
     --lc-drip-aspect   tile width:height           (5) — higher is sparser
   The section gains that much bottom padding so drips hang below the content. */
.lc-drip{
  --lc-drip-h:54px;
  --lc-drip-aspect:5;
  padding-bottom:var(--lc-drip-h)!important;
  -webkit-mask-image:linear-gradient(#000,#000),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 20%22 preserveAspectRatio=%22none%22%3E%3Cpath fill=%22%23000%22 d=%22M0 0 V4.00 H11.58 C11.58 10.20 11.33 12.82 11.33 15.27 C11.33 17.73 13.33 19.73 15.79 19.73 C18.25 19.73 20.24 17.73 20.24 15.27 C20.24 12.82 19.99 10.20 19.99 4.00 H21.63 C24.18 6.95 27.58 6.95 30.13 4.00 H63.92 C63.92 6.17 63.61 4.94 63.61 7.94 C63.61 10.96 66.06 13.41 69.08 13.41 C72.10 13.41 74.55 10.96 74.55 7.94 C74.55 4.94 74.24 6.17 74.24 4.00 H100.00 V0 Z%22/%3E%3C/svg%3E");
          mask-image:linear-gradient(#000,#000),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 20%22 preserveAspectRatio=%22none%22%3E%3Cpath fill=%22%23000%22 d=%22M0 0 V4.00 H11.58 C11.58 10.20 11.33 12.82 11.33 15.27 C11.33 17.73 13.33 19.73 15.79 19.73 C18.25 19.73 20.24 17.73 20.24 15.27 C20.24 12.82 19.99 10.20 19.99 4.00 H21.63 C24.18 6.95 27.58 6.95 30.13 4.00 H63.92 C63.92 6.17 63.61 4.94 63.61 7.94 C63.61 10.96 66.06 13.41 69.08 13.41 C72.10 13.41 74.55 10.96 74.55 7.94 C74.55 4.94 74.24 6.17 74.24 4.00 H100.00 V0 Z%22/%3E%3C/svg%3E");
  -webkit-mask-size:100% calc(100% - var(--lc-drip-h) + 1px),calc(var(--lc-drip-h) * var(--lc-drip-aspect)) var(--lc-drip-h);
          mask-size:100% calc(100% - var(--lc-drip-h) + 1px),calc(var(--lc-drip-h) * var(--lc-drip-aspect)) var(--lc-drip-h);
  -webkit-mask-position:left top,left bottom;
          mask-position:left top,left bottom;
  -webkit-mask-repeat:no-repeat,round;
          mask-repeat:no-repeat,round;}
.lc-drip-sm{--lc-drip-h:38px;}
.lc-drip-lg{--lc-drip-h:80px;}
/* how often a drip occurs, independent of depth */
.lc-drip-dense{--lc-drip-aspect:3.4;}
.lc-drip-sparse{--lc-drip-aspect:7;}

/* ===== 9. HEX ENTRANCE — each hexagon arriving on its own =================
   On by default for the cluster, because the markup usually already carries the
   classes it needs and there is nowhere convenient to add another. Put
   lc-hexstill on the cluster to switch it off.

   The whole hexagon moves — tape ring and photo together — since the ring now
   lives on the slot. Stagger comes from shifting each slot's animation-range
   rather than from a delay, so it holds however fast the visitor scrolls.

   Scroll-driven with no JavaScript. Browsers without animation-timeline show
   the hexagons normally, so nothing is ever stuck invisible. */
@keyframes lc-hexin{
  from{opacity:0;transform:translateY(26px) scale(.86);}
  to{opacity:1;transform:translateY(0) scale(1);}}
@supports (animation-timeline:view()){
  .lc-art-cluster .elementor-widget-image,
  .lc-art-cluster-double .elementor-widget-image{
    animation:lc-hexin auto both;
    animation-timeline:view();
    /* Start anchored to the entry phase (that is the trigger point), end in the
       cover phase — the entry phase is only ~275px of scroll here, so an
       entry-to-entry range can never run longer than that. Ending on cover lets
       each hexagon take ~290px instead of ~110px. */
    animation-range:entry 30% cover 38%;}
  .lc-art-cluster .lc-slot2,.lc-art-cluster-double .lc-slot2{animation-range:entry 45% cover 41%;}
  .lc-art-cluster .lc-slot3,.lc-art-cluster-double .lc-slot3{animation-range:entry 60% cover 44%;}
  .lc-hexin-quick .lc-slot1{animation-range:entry 30% cover 20%;}
  .lc-hexin-quick .lc-slot2{animation-range:entry 45% cover 23%;}
  .lc-hexin-quick .lc-slot3{animation-range:entry 60% cover 26%;}
  .lc-hexin-slow .lc-slot1{animation-range:entry 30% cover 38%;}
  .lc-hexin-slow .lc-slot2{animation-range:entry 45% cover 43%;}
  .lc-hexin-slow .lc-slot3{animation-range:entry 60% cover 48%;}
  .lc-hexin-together .elementor-widget-image{animation-range:entry 35% cover 30%;}
  .lc-hexstill .elementor-widget-image{animation:none;}
}
@media(prefers-reduced-motion:reduce){
  .lc-art-cluster .elementor-widget-image,
  .lc-art-cluster-double .elementor-widget-image{animation:none;opacity:1;transform:none;}}

/* ===== 10. LABEL BLOCK — multi-line captions inside a hexagon =============
   lc-steps-inside centres a single line low in the hexagon. A stacked block
   (name / size / button) needs to sit higher and narrower, because a flat-top
   hexagon is only ~70% of its width by the time you are 79% down it. */
/* --lc-step-y is where the block's BOTTOM sits, as a fraction of the hexagon's
   height — translateY(-100%) instead of the single-line variant's -50%. Anchoring
   the bottom keeps the block sitting low no matter how many lines it holds. */
.lc-steps-block{--lc-step-y:.93;--lc-step-title:1.3em;
  --lc-step-shadow:0 2px 4px rgba(0,0,0,.7);}
.lc-steps-block .lc-step1,
.lc-steps-block .lc-step2,
.lc-steps-block .lc-step3{transform:translateY(-100%);}
/* Drop shadow on the glyphs themselves — text-shadow, not a box behind them.
   Kept tight and low-opacity so it reads as depth on the type rather than as a
   slab sitting on the photo. */
.lc-steps-block .lc-step1 .elementor-heading-title,
.lc-steps-block .lc-step2 .elementor-heading-title,
.lc-steps-block .lc-step3 .elementor-heading-title,
.lc-steps-block .lc-step1 .elementor-button,
.lc-steps-block .lc-step2 .elementor-button,
.lc-steps-block .lc-step3 .elementor-button{text-shadow:var(--lc-step-shadow);}
/* the strain name — first widget in the block — carries the most weight */
.lc-steps-block .elementor-widget-heading:first-child .elementor-heading-title{
  font-size:var(--lc-step-title);line-height:1.1;}
.lc-steps-block .lc-step1 .elementor-widget,
.lc-steps-block .lc-step2 .elementor-widget,
.lc-steps-block .lc-step3 .elementor-widget{margin-bottom:2px;}

/* Caption positions for the mirrored cluster. These live at the end on purpose:
   they and lc-steps-inside's own left values have identical specificity, so
   source order is what decides, and the flip has to be the one that wins. */
.lc-art-cluster-flip .lc-step1{left:47.662%;}
.lc-art-cluster-flip .lc-step2{left:3.772%;}
.lc-art-cluster-flip .lc-step3{left:47.662%;}

/* ===== 11. HEX CAROUSEL — an interlocking hexagon strip that auto-scrolls ===
   Put lc-hexcarousel on a nested-carousel widget. Each slide's photo becomes a
   flat-top hexagon; alternate slides sit slightly high and slightly low so the
   row reads as a honeycomb strip rather than a line of tiles.

   Interlocking is done by oversizing the hexagon to 4/3 of its slide and
   centring it, rather than by pulling slides together with negative margins —
   Swiper computes slide positions from their box widths, so touching those
   would fight the carousel's own maths. Transforms and widths on the image
   leave that untouched. */
.lc-hexcarousel{
  /* In a flat-top hex grid, neighbouring columns sit exactly half a hexagon
     apart vertically, so the rise is 25% up and 25% down. Overlap above 100%
     is what puts their slanted faces parallel to each other; the amount over
     4/3 of the slide is the mortar gap between them. */
  --lc-hexc-overlap:118%;--lc-hexc-rise:25%;--lc-hexc-pad:6.4%;}
/* Swiper eases each slide in and out, which is what reads as the carousel
   stopping between images even with the delay at 1ms. Linear timing makes the
   strip travel at a constant speed instead. */
.lc-hexcarousel .swiper-wrapper{transition-timing-function:linear!important;}
.lc-hexcarousel .swiper,
.lc-hexcarousel .e-n-carousel{overflow:visible;}
.lc-hexcarousel .swiper-slide{overflow:visible;}
.lc-hexcarousel .swiper-slide img{
  display:block;width:var(--lc-hexc-overlap);max-width:none;
  margin-left:calc((100% - var(--lc-hexc-overlap)) / 2);
  aspect-ratio:1/0.866;object-fit:cover;
  clip-path:var(--lc-hexclip-flat);
  border-radius:0!important;}
.lc-hexcarousel .swiper-slide:nth-of-type(odd) img{transform:translateY(calc(-1 * var(--lc-hexc-rise)));}
.lc-hexcarousel .swiper-slide:nth-of-type(even) img{transform:translateY(var(--lc-hexc-rise));}
/* the strip needs vertical room for the rise, and horizontal room for the overlap */
/* The staggered slides sit half a hexagon above and below the carousel's own
   box, so the box has to reserve that or an ancestor clips their points off.
   Percentage padding resolves against WIDTH, which is exactly what we want
   here — the rise is a fixed fraction of the slide width:

       pad = 0.2165 x overlap / slides-to-show     (as a % of the track width)

   At overlap 118% across 4 slides that is 6.4%. Change slides-to-show and this
   needs to change with it; the responsive values below match the widget's
   tablet (3) and mobile (2) settings. */
.lc-hexcarousel{padding-block:var(--lc-hexc-pad);}
@media(max-width:1024px){.lc-hexcarousel{--lc-hexc-pad:8.5%;}}
@media(max-width:767px){.lc-hexcarousel{--lc-hexc-pad:12.8%;}}
/* overlap above 100% makes the hexagons interlock; below it, they separate */
.lc-hexcarousel-tight{--lc-hexc-overlap:100%;}
.lc-hexcarousel-interlock{--lc-hexc-overlap:133.33%;}
.lc-hexcarousel-airy{--lc-hexc-overlap:78%;}
.lc-hexcarousel-flat{--lc-hexc-rise:0%;}

/* ===== 12. DIMMED DECOR — dark decals that still occlude the background ===
   opacity is the wrong tool for holding a decal back. It makes the artwork
   translucent, so whatever sits behind it — including the section's own hex
   pattern — shows straight through and muddies it. That is the washed-out
   look, and no amount of tuning the opacity value fixes it.

   filter: brightness() darkens the pixels and leaves alpha alone. The decal
   stays fully opaque where it was opaque, so the background cannot bleed
   through the art; it simply sits darker, between the background and the
   content. Genuine gaps in the artwork (between tape segments, inside a ring)
   still show the background, which is correct.

   Put lc-dim on any lc-decor element alongside its own class. */
.lc-dim{filter:brightness(var(--lc-dim,.34)) saturate(var(--lc-dim-sat,.8));}
.lc-dim-soft{--lc-dim:.52;}
.lc-dim-hard{--lc-dim:.20;}
.lc-dim-mono{--lc-dim-sat:0;}
/* a touch of contrast keeps the tape segments from flattening into one mass */
.lc-dim-rich{filter:brightness(var(--lc-dim,.34)) saturate(var(--lc-dim-sat,.8)) contrast(1.15);}

/* --- decals painted on a pseudo-element -----------------------------------
   Backdrops (lc-bg-tunnel / lc-bg-hexmenu), the hexshot tape frame and the
   composite cluster art are all drawn on ::before or ::after. lc-dim-art
   filters just those, so a hexshot's frame can be held back while its photo
   stays bright — which lc-dim on the container could never do. */
.lc-dim-art::before,.lc-dim-art::after{
  filter:brightness(var(--lc-dim,.34)) saturate(var(--lc-dim-sat,.8));}
/* backdrops also need their own opacity released, or it stacks with the filter
   and you are translucent again — the thing we were trying to get away from */
.lc-bg-dim::before{opacity:1!important;
  filter:brightness(var(--lc-dim,.34)) saturate(var(--lc-dim-sat,.8));}
.lc-art-dim::after{filter:brightness(var(--lc-dim,.34)) saturate(var(--lc-dim-sat,.8));}

/* --- a decal used as a container's background, with content on top --------
   filter would darken the text too, since it applies to everything inside the
   element. This lays a dark veil over the background and under the content
   instead, so the decal recedes and the content is untouched. */
.lc-dim-bg{position:relative;isolation:isolate;}
.lc-dim-bg::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:rgba(0,0,0,var(--lc-dim-veil,.62));}
.lc-dim-bg-soft{--lc-dim-veil:.42;}
.lc-dim-bg-hard{--lc-dim-veil:.78;}

/* ===== 13. DECAL PLACEMENT — pin a decal anywhere on a section ============
   Two classes: lc-anchor on the SECTION, lc-place on the decal.

   The decal is taken out of flow, so it never pushes layout around, and it
   paints between the section's background and its content — the same trick the
   backdrops use (isolation on the parent, negative z-index on the decal), which
   is why it can sit behind text without an opacity hack.

   Position with a corner preset, then nudge with the variables:
     --lc-w    size            (260px)
     --lc-x / --lc-y           offset from left / top
     --lc-r / --lc-b           offset from right / bottom
     --lc-dx / --lc-dy         fine nudge, any unit, can be negative
     --lc-rot                  rotation
     --lc-scale                scale
   Negative offsets let a decal bleed off the edge of the section. */
.lc-anchor{position:relative;isolation:isolate;}
/* z-index 0, not -1. At -1 a decal drops behind its parent's own background
   whenever the parent is not lc-anchor'd, and simply vanishes — which looks
   exactly like "the class did nothing". Content is lifted above it instead. */
/* :not(.lc-place) matters — without it this rule is more specific than
   .lc-place and forces the decal back to position:relative, which drops it
   into the flow and undoes the placement entirely. */
.lc-anchor .elementor-widget:not(.lc-place),
.lc-anchor .e-con:not(.lc-place){position:relative;z-index:1;}
.lc-place{position:absolute;z-index:0;pointer-events:none;
  width:var(--lc-w,260px);
  left:var(--lc-x,auto);right:var(--lc-r,auto);
  top:var(--lc-y,auto);bottom:var(--lc-b,auto);
  /* individual properties, not the transform shorthand: Elementor's Advanced &gt;
     Transform controls write `transform`, and a shorthand here would be
     replaced by it — the decal would jump back to the corner. These compose. */
  translate:var(--lc-dx,0) var(--lc-dy,0);
  rotate:var(--lc-rot,0deg);
  scale:var(--lc-scale,1);
  transform-origin:center;}
/* over the content instead of behind it */
.lc-place-front{z-index:3;}
/* a decal still shows without lc-anchor, it just positions against whatever
   ancestor is positioned — usually the section, sometimes not what you meant */

/* corner and edge presets — each sets only the two offsets it needs */
.lc-at-tl{--lc-x:0;--lc-y:0;}
.lc-at-tr{--lc-r:0;--lc-y:0;}
.lc-at-bl{--lc-x:0;--lc-b:0;}
.lc-at-br{--lc-r:0;--lc-b:0;}
.lc-at-t{--lc-x:50%;--lc-y:0;--lc-dx:-50%;}
.lc-at-b{--lc-x:50%;--lc-b:0;--lc-dx:-50%;}
.lc-at-l{--lc-x:0;--lc-y:50%;--lc-dy:-50%;}
.lc-at-r{--lc-r:0;--lc-y:50%;--lc-dy:-50%;}
.lc-at-c{--lc-x:50%;--lc-y:50%;--lc-dx:-50%;--lc-dy:-50%;}

/* common sizes, so most placements need no custom value */
.lc-w-sm{--lc-w:150px;}
.lc-w-lg{--lc-w:420px;}
.lc-w-xl{--lc-w:640px;}
/* let a decal hang off the edge it is pinned to */
.lc-bleed{--lc-dx:-18%;}
.lc-bleed-r{--lc-dx:18%;}
.lc-bleed-y{--lc-dy:-18%;}

@media(max-width:767px){.lc-place{--lc-w:56vw;}}

/* ===== 14. DIM A SECTION'S DECALS ONLY, AND SIZE / ROTATE THEM ============
   lc-dim on a section dims the section — filter applies to everything inside
   the element, text included. Put lc-dim-kids on the SECTION instead and only
   the decals inside it dim; headings, copy and buttons are untouched. */
.lc-dim-kids .lc-decor,
.lc-dim-kids .lc-place,
.lc-dim-kids [class*="lc-hex-"],
.lc-dim-kids .lc-mascot,
.lc-dim-kids .lc-medallion,
.lc-dim-kids .lc-wordmark,
.lc-dim-kids .lc-mountains,
.lc-dim-kids .lc-logo-badge{
  filter:brightness(var(--lc-dim,.34)) saturate(var(--lc-dim-sat,.8));}

/* --- size ---------------------------------------------------------------
   width carries !important because Elementor's own width control ships in the
   page stylesheet, which loads after this one and would otherwise win. These
   are opt-in classes, so if you add one you mean it. */
.lc-w-xs{--lc-w:100px;width:100px!important;}
.lc-w-sm{--lc-w:150px;width:150px!important;}
.lc-w-md{--lc-w:260px;width:260px!important;}
.lc-w-lg{--lc-w:420px;width:420px!important;}
.lc-w-xl{--lc-w:640px;width:640px!important;}
.lc-w-2xl{--lc-w:880px;width:880px!important;}
.lc-w-25{--lc-w:25%;width:25%!important;}
.lc-w-33{--lc-w:33%;width:33%!important;}
.lc-w-50{--lc-w:50%;width:50%!important;}
.lc-w-75{--lc-w:75%;width:75%!important;}
.lc-w-100{--lc-w:100%;width:100%!important;}

/* --- rotate and scale ---------------------------------------------------
   Each class sets the property directly AND the variable. The variable alone
   is inert on anything that does not read it — which was every element except
   lc-decor and lc-place. Setting `rotate` / `scale` (the standalone
   properties, not the transform shorthand) makes these work on any element
   and still compose with lc-place's positioning. */
.lc-decor{rotate:var(--lc-rot,0deg);scale:var(--lc-scale,1);}
.lc-rot-3{--lc-rot:3deg;rotate:3deg;}  .lc-rot-n3{--lc-rot:-3deg;rotate:-3deg;}
.lc-rot-6{--lc-rot:6deg;rotate:6deg;}  .lc-rot-n6{--lc-rot:-6deg;rotate:-6deg;}
.lc-rot-10{--lc-rot:10deg;rotate:10deg;}  .lc-rot-n10{--lc-rot:-10deg;rotate:-10deg;}
.lc-rot-15{--lc-rot:15deg;rotate:15deg;}  .lc-rot-n15{--lc-rot:-15deg;rotate:-15deg;}
.lc-rot-30{--lc-rot:30deg;rotate:30deg;}  .lc-rot-n30{--lc-rot:-30deg;rotate:-30deg;}
.lc-rot-45{--lc-rot:45deg;rotate:45deg;}  .lc-rot-n45{--lc-rot:-45deg;rotate:-45deg;}
.lc-rot-90{--lc-rot:90deg;rotate:90deg;}  .lc-rot-n90{--lc-rot:-90deg;rotate:-90deg;}
.lc-scale-75{--lc-scale:.75;scale:.75;}
.lc-scale-90{--lc-scale:.9;scale:.9;}
.lc-scale-110{--lc-scale:1.1;scale:1.1;}
.lc-scale-125{--lc-scale:1.25;scale:1.25;}
.lc-scale-150{--lc-scale:1.5;scale:1.5;}

/* ===== 15. SOLID-OUTLINE CLUSTERS ========================================
   The same three hexagons, same geometry, same photo slots — solid rings
   instead of rainbow tape. Add as a MODIFIER next to lc-art-cluster so the
   aspect ratio, slot positions and lc-art-cluster-flip all still apply:

       lc-hexart lc-art-cluster lc-art-outline
       lc-hexart lc-art-cluster lc-art-outline-double
       lc-hexart lc-art-cluster lc-art-cluster-flip lc-art-outline

   The cluster draws its ring per slot, not as one overlay for all three, so
   these override that same per-slot pseudo. Drawn as a mask with the colour
   coming from background-color, so the ring takes any colour rather than
   having one baked into a PNG — set --lc-outline on the cluster or section. */
.lc-art-outline .elementor-widget-image::after,
.lc-art-outline-double .elementor-widget-image::after{
  background:none;
  background-color:var(--lc-outline,#EAA842);
  -webkit-mask-size:100% 100%;mask-size:100% 100%;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;}
.lc-art-outline .elementor-widget-image::after{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 700 606%22 preserveAspectRatio=%22none%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M700.0 303.1 525.0 0.0 175.0 -0.0 0.0 303.1 175.0 606.2 525.0 606.2ZM661.5 303.1 505.8 33.3 194.3 33.3 38.5 303.1 194.2 572.9 505.8 572.9Z%22/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 700 606%22 preserveAspectRatio=%22none%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M700.0 303.1 525.0 0.0 175.0 -0.0 0.0 303.1 175.0 606.2 525.0 606.2ZM661.5 303.1 505.8 33.3 194.3 33.3 38.5 303.1 194.2 572.9 505.8 572.9Z%22/%3E%3C/svg%3E");}
.lc-art-outline-double .elementor-widget-image::after{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 700 606%22 preserveAspectRatio=%22none%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M700.0 303.1 525.0 0.0 175.0 -0.0 0.0 303.1 175.0 606.2 525.0 606.2ZM661.5 303.1 505.8 33.3 194.3 33.3 38.5 303.1 194.2 572.9 505.8 572.9ZM631.5 303.1 490.8 59.3 209.3 59.3 68.5 303.1 209.2 546.9 490.8 546.9ZM593.0 303.1 471.5 92.7 228.5 92.7 107.0 303.1 228.5 513.6 471.5 513.6Z%22/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 700 606%22 preserveAspectRatio=%22none%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M700.0 303.1 525.0 0.0 175.0 -0.0 0.0 303.1 175.0 606.2 525.0 606.2ZM661.5 303.1 505.8 33.3 194.3 33.3 38.5 303.1 194.2 572.9 505.8 572.9ZM631.5 303.1 490.8 59.3 209.3 59.3 68.5 303.1 209.2 546.9 490.8 546.9ZM593.0 303.1 471.5 92.7 228.5 92.7 107.0 303.1 228.5 513.6 471.5 513.6Z%22/%3E%3C/svg%3E");}

/* the same ring as a standalone decal, for lc-decor / lc-place use */
.lc-hex-ring-outline{aspect-ratio:700/606;background-image:none;
  background-color:var(--lc-outline,#EAA842);
  -webkit-mask-size:contain;mask-size:contain;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 700 606%22 preserveAspectRatio=%22none%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M700.0 303.1 525.0 0.0 175.0 -0.0 0.0 303.1 175.0 606.2 525.0 606.2ZM661.5 303.1 505.8 33.3 194.3 33.3 38.5 303.1 194.2 572.9 505.8 572.9Z%22/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 700 606%22 preserveAspectRatio=%22none%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M700.0 303.1 525.0 0.0 175.0 -0.0 0.0 303.1 175.0 606.2 525.0 606.2ZM661.5 303.1 505.8 33.3 194.3 33.3 38.5 303.1 194.2 572.9 505.8 572.9Z%22/%3E%3C/svg%3E");}

/* --- one colour per hexagon ---------------------------------------------
   Each slot reads its own variable and falls back to --lc-outline, so the
   single-colour presets below still force all three when you want that.
   Defaults are three stops spread across the tape palette. */
.lc-art-outline .lc-slot1::after,.lc-art-outline-double .lc-slot1::after{
  background-color:var(--lc-o1,var(--lc-outline,#EAA842));}
.lc-art-outline .lc-slot2::after,.lc-art-outline-double .lc-slot2::after{
  background-color:var(--lc-o2,var(--lc-outline,#00A8B4));}
.lc-art-outline .lc-slot3::after,.lc-art-outline-double .lc-slot3::after{
  background-color:var(--lc-o3,var(--lc-outline,#7E4884));}

/* triads, all drawn from the tape colours */
.lc-tri-mix{--lc-o1:#EAA842;--lc-o2:#00A8B4;--lc-o3:#7E4884;}   /* amber / teal / purple */
.lc-tri-warm{--lc-o1:#EAA842;--lc-o2:#D84242;--lc-o3:#A83054;}  /* amber / red / crimson */
.lc-tri-cool{--lc-o1:#00A8B4;--lc-o2:#42609C;--lc-o3:#7E4884;}  /* teal / blue / purple */
.lc-tri-fresh{--lc-o1:#84C096;--lc-o2:#00A8B4;--lc-o3:#EAA842;} /* green / teal / amber */
.lc-tri-punch{--lc-o1:#D84242;--lc-o2:#EAA842;--lc-o3:#42609C;} /* red / amber / blue */

/* single colour for all three; --lc-outline takes any value */
.lc-outline-amber{--lc-outline:#EAA842;}
.lc-outline-cream{--lc-outline:#F3EFE6;}
.lc-outline-teal{--lc-outline:#00A8B4;}
.lc-outline-purple{--lc-outline:#7E4884;}
.lc-outline-red{--lc-outline:#D84242;}
.lc-outline-ink{--lc-outline:#1E1E1E;}

/* ===== 16. SECTION EDGE GLOW =============================================
   A soft bloom along the top and bottom of a section, in the section's own
   colours. Both glows live on one ::after with two background layers, so
   ::before stays free for Elementor's background-overlay control.

   screen blending is what makes it read as light rather than as a coloured
   wash laid on top — the glow adds to what is already there instead of
   covering it. z-index -1 with isolation on the parent keeps it above the
   background and below the content, so text never sits in the bloom.

   Defaults are sampled from the Royal Jelly section's visible crop.
     --lc-glow-top / --lc-glow-bottom   colours
     --lc-glow-h                        how far in it reaches (22%)
     --lc-glow-op                       intensity (.6) */
.lc-glow{position:relative;isolation:isolate;}
.lc-glow::after{content:"";position:absolute;
  inset:calc(-1 * var(--lc-glow-bleed,0px)) 0;
  z-index:-1;pointer-events:none;
  opacity:var(--lc-glow-op,.6);mix-blend-mode:screen;
  background:
    linear-gradient(to bottom,var(--lc-glow-top,#E4A95C) 0%,transparent var(--lc-glow-h,22%)),
    linear-gradient(to top,var(--lc-glow-bottom,#9D5157) 0%,transparent var(--lc-glow-h,22%));}

/* one edge only */
.lc-glow-top-only::after{background:
  linear-gradient(to bottom,var(--lc-glow-top,#E4A95C) 0%,transparent var(--lc-glow-h,22%));}
.lc-glow-bottom-only::after{background:
  linear-gradient(to top,var(--lc-glow-bottom,#9D5157) 0%,transparent var(--lc-glow-h,22%));}

/* reach and intensity */
.lc-glow-tight{--lc-glow-h:12%;}
.lc-glow-wide{--lc-glow-h:36%;}
.lc-glow-soft{--lc-glow-op:.38;}
.lc-glow-strong{--lc-glow-op:.85;}
/* let the bloom spill past the section edge onto whatever sits beyond it */
.lc-glow-bleed{--lc-glow-bleed:70px;}

/* colour pairs pulled from real sections */
.lc-glow-jelly{--lc-glow-top:#E4A95C;--lc-glow-bottom:#9D5157;}
.lc-glow-amber{--lc-glow-top:#EAA842;--lc-glow-bottom:#EAA842;}
.lc-glow-teal{--lc-glow-top:#00A8B4;--lc-glow-bottom:#00A8B4;}
.lc-glow-purple{--lc-glow-top:#7E4884;--lc-glow-bottom:#7E4884;}
/* mcpwp:block:end name="lc-brandkit" */

/* mcpwp:block:start name="lc-brandkit-page" hash="acd76b5581284e70" */
/* /brand-kit/ reference page — presentation only, not part of the reusable kit */
.lc-democard{transition:border-color .18s;}
.lc-democard:hover{border-color:#555!important;}
.lc-demoarea{min-height:180px;position:relative;border-radius:10px;
  background:repeating-conic-gradient(#15161A 0 25%,#101116 0 50%) 0 0/22px 22px;}
.lc-code p{margin:0;word-break:break-word;background:#0B0B0E;border:1px solid #2A2A2A;
  border-radius:8px;padding:9px 12px;font-family:"Courier New",monospace;}
.lc-decogrid .lc-democard{width:calc(25% - 15px)!important;}
@media(max-width:1024px){.lc-decogrid .lc-democard{width:calc(50% - 10px)!important;}}
@media(max-width:767px){.lc-decogrid .lc-democard{width:100%!important;}}
/* the demo tape cards need their own stacking context so the pseudo-borders show */
.lc-democard.lc-tape-top,.lc-democard.lc-tape-both{overflow:hidden;}
/* mcpwp:block:end name="lc-brandkit-page" */

/* mcpwp:block:start name="lc-cardline" hash="d07328535eb7cf81" */
/* ===== CARD LINES — a slim brand-colour border per card ==================
   SITE-WIDE by default. Every Elementor post card and loop item gets it with
   no class at all, so blog lists, "More From The Lab" and anything published
   later are covered. Named parts of the site opt in by the class they already
   carry: lc-contactcard, lc-review, lc-tips, lc-specs, and the rows inside
   lc-faq and lc-strains. For anything else, put lc-cardedge on the card
   (border only) or lc-cardbox (border + the blog card's fill, radius and
   padding). NOTE lc-card is the shop's own product-card class and is
   deliberately NOT in this list — product cards stay plain.

   Each card resolves ONE accent colour, --lc-c, and everything else is drawn
   from it: a border that runs from full colour at the top-left to a quieter
   version at the bottom-right, and a whisper of the same colour in the
   top-left of the card. The border is a gradient painted in the border box
   under a solid padding-box fill — border-image can't follow border-radius,
   this can.

   Change at will, on :root for the whole site or on any wrapper for one
   section:
     --lc-card-w         border width (1.5px)
     --lc-card-1 ... -7  the seven colours, in cycle order
     --lc-card-fade      how much colour is left at the far corner (62%) —
                         higher is flatter, lower is a stronger fade
     --lc-card-wash      strength of the inner tint (3.5%)
     --lc-card-bg        card fill (#111214, the existing card colour)
     --lc-card-radius    corner radius for lc-cardbox (14px)
     --lc-card-pad       inner padding for lc-cardbox (20px)

   Opt out of a single grid or card with lc-nocard. */
:root,.lc-cardline{
  --lc-card-w:1.5px;--lc-card-fade:62%;--lc-card-wash:3.5%;--lc-card-bg:#111214;
  --lc-card-1:#EAA842;--lc-card-2:#00A8B4;--lc-card-3:#7E4884;--lc-card-4:#D84242;
  --lc-card-5:#84C096;--lc-card-6:#42609C;--lc-card-7:#A83054;}

article.elementor-post,
.e-loop-item,
.lc-cardbox,
.lc-quotecard,
.lc-cardedge,
.lc-contactcard,
.lc-review,
.lc-tips,
.lc-specs,
.lc-faq .elementor-accordion-item,
.lc-strainloop details.e-n-accordion-item{
  border:var(--lc-card-w) solid transparent!important;
  background:
    radial-gradient(120% 85% at 0% 0%,
      color-mix(in srgb,var(--lc-c) var(--lc-card-wash),transparent),transparent 62%) padding-box,
    linear-gradient(var(--lc-card-bg),var(--lc-card-bg)) padding-box,
    linear-gradient(135deg,var(--lc-c) 0%,
      color-mix(in srgb,var(--lc-c) var(--lc-card-fade),var(--lc-card-bg)) 72%) border-box!important;}

/* cards built as plain containers also take the blog card's shape */
.lc-cardbox,.lc-quotecard{
  border-radius:var(--lc-card-radius,14px)!important;
  padding:var(--lc-card-pad,20px)!important;}

/* the product page's spec panels, built to match the How To Enjoy card */
.lc-specs{border-radius:14px!important;padding:28px!important;}

/* the strain list is all one teal. Swap these seven back to the tape order
   (#7E4884 #42609C #00A8B4 #84C096 #EAA842 #D84242 #A83054) to make every
   row step through the rainbow again. */
.lc-strainloop .e-loop-item:nth-child(7n+1){--lc-c:var(--lc-card-1);}
.lc-strainloop .e-loop-item:nth-child(7n+2){--lc-c:var(--lc-card-2);}
.lc-strainloop .e-loop-item:nth-child(7n+3){--lc-c:var(--lc-card-3);}
.lc-strainloop .e-loop-item:nth-child(7n+4){--lc-c:var(--lc-card-4);}
.lc-strainloop .e-loop-item:nth-child(7n+5){--lc-c:var(--lc-card-5);}
.lc-strainloop .e-loop-item:nth-child(7n+6){--lc-c:var(--lc-card-6);}
.lc-strainloop .e-loop-item:nth-child(7n+7){--lc-c:var(--lc-card-7);}
.lc-strainloop{
  --lc-card-1:#0B7F88;--lc-card-2:#0B7F88;--lc-card-3:#0B7F88;--lc-card-4:#0B7F88;
  --lc-card-5:#0B7F88;--lc-card-6:#0B7F88;--lc-card-7:#0B7F88;}

/* --- which colour each card gets ----------------------------------------
   Fallback: position in the list. Adjacent cards never match, but position
   shifts every time something new is published. */
article.elementor-post:nth-child(7n+1),
.e-loop-item:nth-child(7n+1),
.lc-cardbox:nth-child(7n+1),
.lc-quotecard:nth-child(7n+1),
.lc-cardedge:nth-child(7n+1),
.lc-contactcard:nth-child(7n+1),
.lc-review:nth-child(7n+1),
.lc-tips:nth-child(7n+1),
.lc-specs:nth-child(7n+1),
.lc-faq .elementor-accordion-item:nth-child(7n+1){--lc-c:var(--lc-card-1);}
article.elementor-post:nth-child(7n+2),
.e-loop-item:nth-child(7n+2),
.lc-cardbox:nth-child(7n+2),
.lc-quotecard:nth-child(7n+2),
.lc-cardedge:nth-child(7n+2),
.lc-contactcard:nth-child(7n+2),
.lc-review:nth-child(7n+2),
.lc-tips:nth-child(7n+2),
.lc-specs:nth-child(7n+2),
.lc-faq .elementor-accordion-item:nth-child(7n+2){--lc-c:var(--lc-card-2);}
article.elementor-post:nth-child(7n+3),
.e-loop-item:nth-child(7n+3),
.lc-cardbox:nth-child(7n+3),
.lc-quotecard:nth-child(7n+3),
.lc-cardedge:nth-child(7n+3),
.lc-contactcard:nth-child(7n+3),
.lc-review:nth-child(7n+3),
.lc-tips:nth-child(7n+3),
.lc-specs:nth-child(7n+3),
.lc-faq .elementor-accordion-item:nth-child(7n+3){--lc-c:var(--lc-card-3);}
article.elementor-post:nth-child(7n+4),
.e-loop-item:nth-child(7n+4),
.lc-cardbox:nth-child(7n+4),
.lc-quotecard:nth-child(7n+4),
.lc-cardedge:nth-child(7n+4),
.lc-contactcard:nth-child(7n+4),
.lc-review:nth-child(7n+4),
.lc-tips:nth-child(7n+4),
.lc-specs:nth-child(7n+4),
.lc-faq .elementor-accordion-item:nth-child(7n+4){--lc-c:var(--lc-card-4);}
article.elementor-post:nth-child(7n+5),
.e-loop-item:nth-child(7n+5),
.lc-cardbox:nth-child(7n+5),
.lc-quotecard:nth-child(7n+5),
.lc-cardedge:nth-child(7n+5),
.lc-contactcard:nth-child(7n+5),
.lc-review:nth-child(7n+5),
.lc-tips:nth-child(7n+5),
.lc-specs:nth-child(7n+5),
.lc-faq .elementor-accordion-item:nth-child(7n+5){--lc-c:var(--lc-card-5);}
article.elementor-post:nth-child(7n+6),
.e-loop-item:nth-child(7n+6),
.lc-cardbox:nth-child(7n+6),
.lc-quotecard:nth-child(7n+6),
.lc-cardedge:nth-child(7n+6),
.lc-contactcard:nth-child(7n+6),
.lc-review:nth-child(7n+6),
.lc-tips:nth-child(7n+6),
.lc-specs:nth-child(7n+6),
.lc-faq .elementor-accordion-item:nth-child(7n+6){--lc-c:var(--lc-card-6);}
article.elementor-post:nth-child(7n+7),
.e-loop-item:nth-child(7n+7),
.lc-cardbox:nth-child(7n+7),
.lc-quotecard:nth-child(7n+7),
.lc-cardedge:nth-child(7n+7),
.lc-contactcard:nth-child(7n+7),
.lc-review:nth-child(7n+7),
.lc-tips:nth-child(7n+7),
.lc-specs:nth-child(7n+7),
.lc-faq .elementor-accordion-item:nth-child(7n+7){--lc-c:var(--lc-card-7);}

/* a second grid on the same page starts further round the wheel. This shifts
   the position mapping only — it does not redefine the colours — so it can
   never make the same post a different colour in two lists once per-post
   colours are on. */
.lc-cardline-offset article.elementor-post:nth-child(7n+1),
.lc-cardline-offset .e-loop-item:nth-child(7n+1),
.lc-cardline-offset .lc-cardbox:nth-child(7n+1),
.lc-cardline-offset .lc-quotecard:nth-child(7n+1),
.lc-cardline-offset .lc-cardedge:nth-child(7n+1),
.lc-cardline-offset .lc-contactcard:nth-child(7n+1),
.lc-cardline-offset .lc-review:nth-child(7n+1),
.lc-cardline-offset .lc-tips:nth-child(7n+1),
.lc-cardline-offset .lc-specs:nth-child(7n+1),
.lc-cardline-offset .lc-faq .elementor-accordion-item:nth-child(7n+1){--lc-c:var(--lc-card-3);}
.lc-cardline-offset article.elementor-post:nth-child(7n+2),
.lc-cardline-offset .e-loop-item:nth-child(7n+2),
.lc-cardline-offset .lc-cardbox:nth-child(7n+2),
.lc-cardline-offset .lc-quotecard:nth-child(7n+2),
.lc-cardline-offset .lc-cardedge:nth-child(7n+2),
.lc-cardline-offset .lc-contactcard:nth-child(7n+2),
.lc-cardline-offset .lc-review:nth-child(7n+2),
.lc-cardline-offset .lc-tips:nth-child(7n+2),
.lc-cardline-offset .lc-specs:nth-child(7n+2),
.lc-cardline-offset .lc-faq .elementor-accordion-item:nth-child(7n+2){--lc-c:var(--lc-card-4);}
.lc-cardline-offset article.elementor-post:nth-child(7n+3),
.lc-cardline-offset .e-loop-item:nth-child(7n+3),
.lc-cardline-offset .lc-cardbox:nth-child(7n+3),
.lc-cardline-offset .lc-quotecard:nth-child(7n+3),
.lc-cardline-offset .lc-cardedge:nth-child(7n+3),
.lc-cardline-offset .lc-contactcard:nth-child(7n+3),
.lc-cardline-offset .lc-review:nth-child(7n+3),
.lc-cardline-offset .lc-tips:nth-child(7n+3),
.lc-cardline-offset .lc-specs:nth-child(7n+3),
.lc-cardline-offset .lc-faq .elementor-accordion-item:nth-child(7n+3){--lc-c:var(--lc-card-5);}
.lc-cardline-offset article.elementor-post:nth-child(7n+4),
.lc-cardline-offset .e-loop-item:nth-child(7n+4),
.lc-cardline-offset .lc-cardbox:nth-child(7n+4),
.lc-cardline-offset .lc-quotecard:nth-child(7n+4),
.lc-cardline-offset .lc-cardedge:nth-child(7n+4),
.lc-cardline-offset .lc-contactcard:nth-child(7n+4),
.lc-cardline-offset .lc-review:nth-child(7n+4),
.lc-cardline-offset .lc-tips:nth-child(7n+4),
.lc-cardline-offset .lc-specs:nth-child(7n+4),
.lc-cardline-offset .lc-faq .elementor-accordion-item:nth-child(7n+4){--lc-c:var(--lc-card-6);}
.lc-cardline-offset article.elementor-post:nth-child(7n+5),
.lc-cardline-offset .e-loop-item:nth-child(7n+5),
.lc-cardline-offset .lc-cardbox:nth-child(7n+5),
.lc-cardline-offset .lc-quotecard:nth-child(7n+5),
.lc-cardline-offset .lc-cardedge:nth-child(7n+5),
.lc-cardline-offset .lc-contactcard:nth-child(7n+5),
.lc-cardline-offset .lc-review:nth-child(7n+5),
.lc-cardline-offset .lc-tips:nth-child(7n+5),
.lc-cardline-offset .lc-specs:nth-child(7n+5),
.lc-cardline-offset .lc-faq .elementor-accordion-item:nth-child(7n+5){--lc-c:var(--lc-card-7);}
.lc-cardline-offset article.elementor-post:nth-child(7n+6),
.lc-cardline-offset .e-loop-item:nth-child(7n+6),
.lc-cardline-offset .lc-cardbox:nth-child(7n+6),
.lc-cardline-offset .lc-quotecard:nth-child(7n+6),
.lc-cardline-offset .lc-cardedge:nth-child(7n+6),
.lc-cardline-offset .lc-contactcard:nth-child(7n+6),
.lc-cardline-offset .lc-review:nth-child(7n+6),
.lc-cardline-offset .lc-tips:nth-child(7n+6),
.lc-cardline-offset .lc-specs:nth-child(7n+6),
.lc-cardline-offset .lc-faq .elementor-accordion-item:nth-child(7n+6){--lc-c:var(--lc-card-1);}
.lc-cardline-offset article.elementor-post:nth-child(7n+7),
.lc-cardline-offset .e-loop-item:nth-child(7n+7),
.lc-cardline-offset .lc-cardbox:nth-child(7n+7),
.lc-cardline-offset .lc-quotecard:nth-child(7n+7),
.lc-cardline-offset .lc-cardedge:nth-child(7n+7),
.lc-cardline-offset .lc-contactcard:nth-child(7n+7),
.lc-cardline-offset .lc-review:nth-child(7n+7),
.lc-cardline-offset .lc-tips:nth-child(7n+7),
.lc-cardline-offset .lc-specs:nth-child(7n+7),
.lc-cardline-offset .lc-faq .elementor-accordion-item:nth-child(7n+7){--lc-c:var(--lc-card-2);}

/* Preferred for posts: a colour that belongs to the POST. When the site
   stamps each post with lc-seq-0 … lc-seq-6 at publish time (see the PHP
   snippet), that wins, so a post keeps its colour for life, the same post
   matches across every list, and each new post takes the next colour after
   the last one. */
article.elementor-post.lc-seq-0,
.e-loop-item.lc-seq-0{--lc-c:var(--lc-card-1);}
article.elementor-post.lc-seq-1,
.e-loop-item.lc-seq-1{--lc-c:var(--lc-card-2);}
article.elementor-post.lc-seq-2,
.e-loop-item.lc-seq-2{--lc-c:var(--lc-card-3);}
article.elementor-post.lc-seq-3,
.e-loop-item.lc-seq-3{--lc-c:var(--lc-card-4);}
article.elementor-post.lc-seq-4,
.e-loop-item.lc-seq-4{--lc-c:var(--lc-card-5);}
article.elementor-post.lc-seq-5,
.e-loop-item.lc-seq-5{--lc-c:var(--lc-card-6);}
article.elementor-post.lc-seq-6,
.e-loop-item.lc-seq-6{--lc-c:var(--lc-card-7);}

/* single cards that shouldn't take their colour from their position — after
   the position rules, and doubled up so they outrank them */
.lc-contactcard.lc-contactcard.lc-contactcard{--lc-c:var(--lc-card-6);}   /* blue */
.lc-specs.lc-specs.lc-specs{--lc-c:var(--lc-card-2);}                    /* teal */

/* pin one card to one colour, whatever its position */
.lc-card-amber.lc-card-amber.lc-card-amber{--lc-c:var(--lc-card-1);}
.lc-card-teal.lc-card-teal.lc-card-teal{--lc-c:var(--lc-card-2);}
.lc-card-purple.lc-card-purple.lc-card-purple{--lc-c:var(--lc-card-3);}
.lc-card-red.lc-card-red.lc-card-red{--lc-c:var(--lc-card-4);}
.lc-card-green.lc-card-green.lc-card-green{--lc-c:var(--lc-card-5);}
.lc-card-blue.lc-card-blue.lc-card-blue{--lc-c:var(--lc-card-6);}
.lc-card-magenta.lc-card-magenta.lc-card-magenta{--lc-c:var(--lc-card-7);}

/* leave a grid or a single card alone */
.lc-nocard,
.lc-nocard article.elementor-post,
.lc-nocard .e-loop-item,
.lc-nocard .lc-cardbox,
.lc-nocard .lc-quotecard,
.lc-nocard .lc-cardedge,
.lc-nocard .lc-contactcard,
.lc-nocard .lc-review,
.lc-nocard .lc-tips,
.lc-nocard .lc-specs,
.lc-nocard .lc-faq .elementor-accordion-item,
.lc-nocard .lc-strainloop details.e-n-accordion-item{
  border-color:#2a2a2a!important;
  background:var(--lc-card-bg)!important;}

/* weight and depth */
.lc-cardline-strong{--lc-card-fade:25%;--lc-card-wash:9%;}   /* the louder first pass */
.lc-cardline-hair{--lc-card-w:1px;}
.lc-cardline-thick{--lc-card-w:2.5px;}
.lc-cardline-flat{--lc-card-fade:100%;--lc-card-wash:0%;}   /* the old solid look */
.lc-cardline-glow{--lc-card-fade:20%;--lc-card-wash:16%;}

/* colour sets, all from the tape palette */
.lc-cardline-tape{--lc-card-1:#7E4884;--lc-card-2:#42609C;--lc-card-3:#00A8B4;--lc-card-4:#84C096;
  --lc-card-5:#EAA842;--lc-card-6:#D84242;--lc-card-7:#A83054;}
.lc-cardline-warm{--lc-card-1:#EAA842;--lc-card-2:#D84242;--lc-card-3:#A83054;
  --lc-card-4:#EAA842;--lc-card-5:#D84242;--lc-card-6:#A83054;--lc-card-7:#EAA842;}
.lc-cardline-cool{--lc-card-1:#00A8B4;--lc-card-2:#42609C;--lc-card-3:#7E4884;
  --lc-card-4:#84C096;--lc-card-5:#00A8B4;--lc-card-6:#42609C;--lc-card-7:#7E4884;}
.lc-cardline-trio{--lc-card-1:#EAA842;--lc-card-2:#00A8B4;--lc-card-3:#7E4884;
  --lc-card-4:#EAA842;--lc-card-5:#00A8B4;--lc-card-6:#7E4884;--lc-card-7:#EAA842;}
.lc-cardline-amber{--lc-card-1:#EAA842;--lc-card-2:#EAA842;--lc-card-3:#EAA842;--lc-card-4:#EAA842;
  --lc-card-5:#EAA842;--lc-card-6:#EAA842;--lc-card-7:#EAA842;}
.lc-cardline-teal{--lc-card-1:#00A8B4;--lc-card-2:#00A8B4;--lc-card-3:#00A8B4;--lc-card-4:#00A8B4;
  --lc-card-5:#00A8B4;--lc-card-6:#00A8B4;--lc-card-7:#00A8B4;}
/* mcpwp:block:end name="lc-cardline" */

/* mcpwp:block:start name="lc-strainlist" hash="e52708238e53a57a" */
/* ===== STRAIN LIST — the /genetics/ strain library, driven by the Strains
   post type. Styled to match the original hand-built accordion exactly:
   [54px thumb] [name] ......... [+/-], and label/value spec rows when open.
   The .lc-sg / .lc-srow / .lc-sk / .lc-sv rules in lc-genetics still do the
   inside of the panel — this block only maps the old look onto Elementor's
   nested accordion markup. */
.lc-strainloop .e-loop-item{background:none!important;border:0!important;padding:0!important;margin:0 0 10px;}
.lc-strainloop .lc-strainitem{position:relative;padding:0;}

/* the card */
/* the gradient border comes from lc-cardline (one tape colour per row);
   background-color underneath guarantees the card is filled edge to edge */
/* these rows are long and short, so a 135deg fade runs out of colour before
   the right-hand end — they take a solid tape colour instead of the gradient */
.lc-strainloop{--lc-card-w:2px;--lc-card-fade:100%;--lc-card-wash:0%;}

/* Elementor's nested accordion puts a 1px #D5D8DC border on the summary —
   that was the white line sitting just inside the card's own border. */
.lc-strainloop summary.e-n-accordion-item-title,
.lc-strainloop .e-n-accordion,
.lc-strainloop .e-n-accordion-item-title-header{border:0!important;}
.lc-strainloop details.e-n-accordion-item{
  background-color:#111214;border-radius:14px;overflow:hidden;transition:border-color .18s;}
/* no hover change on the card border — it was greying out the teal */

/* closed row: [thumb] [name] .......... [icon] */
.lc-strainloop .lc-strainthumb{position:absolute;left:20px;top:14px;width:54px;z-index:2;
  pointer-events:none;margin:0;}
.lc-strainloop .lc-strainthumb img{width:54px;height:54px;object-fit:cover;display:block;
  border-radius:11px;background:#0A0A0A;box-shadow:inset 0 0 0 1px #2A2A2A;}
.lc-strainloop summary.e-n-accordion-item-title{
  display:flex;align-items:center;justify-content:flex-start;gap:16px;min-height:82px;
  padding:14px 20px 14px 90px;cursor:pointer;list-style:none;
  font-family:Cyborg,"Source Sans Pro",sans-serif;font-size:18px;font-weight:600;
  text-transform:uppercase;color:#FFFFFF;}
.lc-strainloop summary.e-n-accordion-item-title::-webkit-details-marker{display:none;}
.lc-strainloop details[open] summary.e-n-accordion-item-title,
.lc-strainloop summary.e-n-accordion-item-title:hover{
  color:#06AAB5;text-shadow:0 0 14px rgba(6,170,181,.55),0 0 4px rgba(6,170,181,.4);}
.lc-strainloop .e-n-accordion-item-title-text{flex:0 0 auto;}
.lc-strainloop .e-n-accordion-item-title-icon{flex:0 0 auto;font-size:14px;line-height:1;}
.lc-strainloop .e-n-accordion-item-title-icon svg{width:14px;height:14px;}

/* open panel */
/* the open panel keeps Elementor's light default border on three sides —
   only the divider above the specs should remain */
.lc-strainloop details.e-n-accordion-item .lc-sg{
  border:0!important;border-top:1px solid #2A2A2A!important;
  padding:6px 20px 20px 90px;display:flex;flex-direction:column;}
.lc-strainloop .lc-srow{display:flex;flex-wrap:wrap;gap:10px;padding:11px 0;
  border-bottom:1px solid #1C1C1F;align-items:baseline;}
.lc-strainloop .lc-srow:last-of-type{border-bottom:0;}
.lc-strainloop .lc-sk{flex:0 0 150px;}
.lc-strainloop .lc-sk .elementor-heading-title{color:#7A7A7A;font-size:12px;letter-spacing:1.4px;
  text-transform:uppercase;font-family:Cyborg,"Source Sans Pro",sans-serif;font-weight:400;margin:0;}
.lc-strainloop .lc-sv{flex:1 1 auto;}
.lc-strainloop .lc-sv p{color:#E4E4E4;font-family:"Source Sans Pro",sans-serif;font-size:15px;margin:0;}
.lc-strainloop .lc-strainbtn{margin-top:16px;}
/* the button is the sitewide holographic CTA (diagonal-gradient-btn); only
   the type and padding are set here so it matches the rest of the panel */
.lc-strainloop .lc-strainbtn .elementor-button{
  color:#0B0C0E;font-family:Cyborg,sans-serif;font-size:12px;letter-spacing:1.4px;
  text-transform:uppercase;padding:11px 20px;border:0;border-radius:9px;}

@media(max-width:767px){
  .lc-strainloop summary.e-n-accordion-item-title{gap:12px;padding:12px 14px 12px 70px;min-height:68px;font-size:15px;}
  .lc-strainloop .lc-strainthumb{left:14px;top:12px;width:44px;}
  .lc-strainloop .lc-strainthumb img{width:44px;height:44px;}
  .lc-strainloop details.e-n-accordion-item .lc-sg{padding:6px 16px 18px 16px;}
  .lc-strainloop .lc-sk{flex:0 0 100%;}
}
/* the raw terpene string the bars are built from — data only, never shown */
.lc-terpdata{display:none!important;}
/* Elementor styles the title h3 and the icon itself, so these win explicitly:
   photo and name hard left, plus/minus bottom-right, teal glow when open. */
.lc-strainloop summary.e-n-accordion-item-title{justify-content:flex-start!important;}
.lc-strainloop .e-n-accordion-item-title-header{
  order:0!important;flex:0 1 auto;margin-left:0!important;margin-right:auto!important;
  justify-content:flex-start!important;}
.lc-strainloop .e-n-accordion-item-title-text{
  color:#FFFFFF!important;font-family:Cyborg,"Source Sans Pro",sans-serif!important;
  font-size:18px!important;font-weight:600!important;text-transform:uppercase!important;
  margin:0!important;transition:color .18s,text-shadow .18s;}
.lc-strainloop .e-n-accordion-item-title-icon{
  order:1!important;margin-left:auto!important;margin-right:0!important;
  align-self:center!important;color:#FFFFFF!important;transition:color .18s,filter .18s;}
.lc-strainloop .e-n-accordion-item-title-icon i,
.lc-strainloop .e-n-accordion-item-title-icon svg{color:inherit!important;fill:currentColor!important;}
.lc-strainloop summary.e-n-accordion-item-title:hover .e-n-accordion-item-title-icon,
.lc-strainloop details[open] summary.e-n-accordion-item-title .e-n-accordion-item-title-icon{
  color:#5CD3DC!important;filter:drop-shadow(0 0 3px rgba(92,211,220,.2));}
.lc-strainloop summary.e-n-accordion-item-title:hover .e-n-accordion-item-title-text,
.lc-strainloop details[open] summary.e-n-accordion-item-title .e-n-accordion-item-title-text{
  color:#5CD3DC!important;text-shadow:0 0 5px rgba(92,211,220,.18);}
.lc-strainloop details[open] summary.e-n-accordion-item-title{background:transparent!important;}
@media(max-width:767px){
  .lc-strainloop .e-n-accordion-item-title-text{font-size:15px!important;}
}
/* strain pages only: FAQ rows, the How To Enjoy card and the Keep Looking
   grid are all teal, like the strain list. The contact page FAQ and the blog
   keep the rotating brand colours. */
body.single-strain .lc-faq,
body.single-strain .lc-tips,
body.single-strain .lc-postgrid{
  --lc-card-1:#0B7F88;--lc-card-2:#0B7F88;--lc-card-3:#0B7F88;--lc-card-4:#0B7F88;
  --lc-card-5:#0B7F88;--lc-card-6:#0B7F88;--lc-card-7:#0B7F88;}
/* Keep Looking cards: the teal glow is on the title only — no halo
   around the card border. */
body.single-strain .lc-postgrid article.elementor-post{
  transition:transform .22s ease;}
body.single-strain .lc-postgrid article.elementor-post:hover{
  transform:translateY(-2px);}
body.single-strain .lc-postgrid article.elementor-post .elementor-post__title a{
  transition:color .18s,text-shadow .18s;}
body.single-strain .lc-postgrid article.elementor-post:hover .elementor-post__title a{
  color:#5CD3DC;text-shadow:0 0 5px rgba(92,211,220,.18);}
/* mcpwp:block:end name="lc-strainlist" */

/* mcpwp:block:start name="lc-pending" hash="0d65778c86d78736" */
/* Placeholder copy awaiting replacement from Lazercat.
   Put lc-pending on any widget or container holding text that is known to be
   wrong or provisional. It stays readable but is visibly struck through, so the
   client can see at a glance what is still outstanding rather than wondering
   whether we missed it. Everything marked this way comes out before launch —
   searching the site for "lc-pending" finds every one of them. */
.lc-pending,
.lc-pending p,
.lc-pending h1,.lc-pending h2,.lc-pending h3,
.lc-pending h4,.lc-pending h5,.lc-pending h6,
.lc-pending .elementor-heading-title{
  text-decoration:line-through!important;
  text-decoration-thickness:1px!important;
  text-decoration-color:rgba(216,66,66,.75)!important;
  opacity:.62;}
/* mcpwp:block:end name="lc-pending" */

/* mcpwp:block:start name="lc-productgrid" hash="6bedb731ec359638" */
/* Product cards in the shop Loop Grid.
   Markup is the original static shop card, now driven by the product CPT via
   the "Product Card" loop item. */
.lc-productcard{height:100%;}
.lc-productcard .elementor-widget-heading{min-width:0;}
.lc-productcard .elementor-heading-title{overflow-wrap:anywhere;hyphens:none;}
.lc-productcard .elementor-widget-image img{aspect-ratio:1/1;object-fit:contain;width:100%;}
/* No panel behind these: the product sits on the page background with no card
   edge. Overrides lc-cardline, which otherwise gives every .e-loop-item the
   gradient border and #111214 fill. Scoped to this grid so the strain loop on
   /genetics/ keeps its borders. */
.lc-grid-loop .e-loop-item,
.lc-grid-loop .e-loop-item .lc-productcard,
.lc-productcard{
  background:none!important;background-color:transparent!important;
  border:0!important;box-shadow:none!important;}
/* Sizes sit where "THC xx%" used to. Edibles carry a full potency string
   ("REC 100mg/bottle (10mg/serving) · MED 4,000mg/bottle…"), far longer than a
   weight, so the row wraps and each value is clamped to two lines. The full
   value is still shown on the product page. */
.lc-prodmeta{flex-wrap:wrap!important;gap:2px 10px;align-items:flex-start;}
.lc-prodmeta .elementor-widget{min-width:0;flex:1 1 auto;}
.lc-prodsize .elementor-heading-title,
.lc-prodstrain .elementor-heading-title{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;line-height:1.25;}
.lc-grid-loop .elementor-loop-container{gap:22px 34px;}
/* mcpwp:block:end name="lc-productgrid" */

/* mcpwp:block:start name="lc-shop-filters-v2" hash="e53cb79fec08ea5b" */
/* Shop filters — native Elementor taxonomy filters, replacing the old
   hand-built lc-tab buttons.

   The category filter is NOT shown: the hexagons above are the category
   .elementor-kit-5 and they link straight to this filter's URL parameter. The widget
   still has to exist in the page for Elementor to read that parameter and
   query the grid, so it is visually hidden rather than removed.

   Sub-types nest under the selected category: Elementor lists every term of a
   taxonomy regardless of what the other filter has selected, so :has() on the
   shared wrapper hides the sub-types that don't belong to the pressed category.
   Pairs come from the product sheet; a new sub-type needs adding here. With
   nothing selected, every sub-type shows. */

/* ---- category filter: present for the URL parameter, not shown */
.lc-filter-type{
  position:absolute!important;width:1px;height:1px;
  margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);
  white-space:nowrap;border:0;}

/* ---- sub-types nest under the selected category */
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="rosin"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="chocolate"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="rosin"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="drops"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="rosin"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="gummies"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="rosin"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="micro-batch"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="rosin"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="premo"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="rosin"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-all-in-one"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="rosin"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-rosin-cartridge"]{display:none!important;}
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="badder"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="chocolate"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="badder"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="drops"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="badder"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="gummies"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="badder"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="micro-batch"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="badder"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-all-in-one"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="badder"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-rosin-cartridge"]{display:none!important;}
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="cartridges"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="chocolate"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="cartridges"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="drops"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="cartridges"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="gummies"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="cartridges"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="micro-batch"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="cartridges"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="premo"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="cartridges"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-all-in-one"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="cartridges"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="ultrapremo"]{display:none!important;}
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="all-in-ones"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="chocolate"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="all-in-ones"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="drops"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="all-in-ones"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="gummies"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="all-in-ones"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="micro-batch"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="all-in-ones"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="premo"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="all-in-ones"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-rosin-cartridge"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="all-in-ones"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="ultrapremo"]{display:none!important;}
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="edibles-drops"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="micro-batch"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="edibles-drops"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="premo"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="edibles-drops"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-all-in-one"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="edibles-drops"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-rosin-cartridge"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="edibles-drops"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="ultrapremo"]{display:none!important;}
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="micro-batch"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="chocolate"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="micro-batch"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="drops"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="micro-batch"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="gummies"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="micro-batch"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="premo"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="micro-batch"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-all-in-one"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="micro-batch"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="solventless-rosin-cartridge"],
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="micro-batch"][aria-pressed="true"]) .lc-filter-sub .e-filter-item[data-filter="ultrapremo"]{display:none!important;}

/* ---- the lc-tab treatment, restated for .e-filter-item.
   Elementor sets its own radius on these, hence !important. */
.lc-filter .e-filter-item{
  background:transparent!important;background-color:transparent!important;
  border:1px solid transparent!important;box-shadow:none!important;
  color:#FFFFFF!important;text-shadow:none;
  font-family:"Cyborg","Source Sans Pro",sans-serif;text-transform:uppercase;
  letter-spacing:1px;font-weight:500;font-size:13px;
  border-radius:10px!important;padding:8px 14px;cursor:pointer;
  transition:color .18s,border-color .18s,box-shadow .18s,text-shadow .18s;}
.lc-filter .e-filter-item:hover{
  border-color:rgba(0,168,180,.4)!important;color:#5CD3DC!important;
  text-shadow:0 0 5px rgba(92,211,220,.18);}
.lc-filter .e-filter-item[aria-pressed="true"]{
  border-color:#00A8B4!important;color:#5CD3DC!important;
  text-shadow:0 0 5px rgba(92,211,220,.18);
  box-shadow:0 0 12px rgba(0,168,180,.26)!important;}

/* ---- Shop All: clears every filter by going back to the bare /shop/ URL.
   Shown only while something is actually filtered — when both filters are on
   their "All" chip there is nothing to clear, so it would just be noise. */
.lc-shopall .elementor-button{
  background:transparent!important;border:1px solid rgba(255,255,255,.22)!important;
  color:#FFFFFF!important;box-shadow:none!important;
  font-family:"Cyborg","Source Sans Pro",sans-serif;text-transform:uppercase;
  letter-spacing:1px;font-weight:500;font-size:12px;
  border-radius:10px!important;padding:7px 18px;
  transition:color .18s,border-color .18s,box-shadow .18s,text-shadow .18s;}
.lc-shopall .elementor-button:hover{
  border-color:#00A8B4!important;color:#5CD3DC!important;
  text-shadow:0 0 5px rgba(92,211,220,.18);
  box-shadow:0 0 12px rgba(0,168,180,.26)!important;}
.lc-shopall{margin-top:10px;}
body:has(.lc-filter-type .e-filter-item[data-filter="__all"][aria-pressed="true"]):has(.lc-filter-sub .e-filter-item[data-filter="__all"][aria-pressed="true"]) .lc-shopall{
  display:none!important;}

/* ---- With no category chosen there is nothing to narrow, and the hexagons
   already do category selection, so the sub-type row stays out of the way
   until a category is active. */
.lc-tabwrap:has(.lc-filter-type .e-filter-item[data-filter="__all"][aria-pressed="true"]) .lc-filter-sub{
  display:none!important;}
/* mcpwp:block:end name="lc-shop-filters-v2" *//* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Cyborg';
	font-style: normal;
	font-weight: normal;
	font-display: auto;
	src: url('https://lazercat.pufdev.com/wp-content/uploads/2026/07/CYBORG.ttf') format('truetype');
}
/* End Custom Fonts CSS */