:root{--bs-pink:#f5c9df;--bs-pink2:#fff2f8;--bs-purple:#d8c6f3;--bs-purple2:#f5f0ff;--bs-ink:#493d52;--bs-muted:#8b7d91;--bs-line:#eadff0;--bs-white:#fff;--bs-shadow:0 18px 55px rgba(107,76,119,.12)}
.cbsm-store,.cbsm-store *{box-sizing:border-box}.cbsm-store{position:fixed;inset:0;z-index:9990;width:100%;height:100vh;height:100dvh;overflow:hidden;background:linear-gradient(145deg,#fff8fc 0%,#faf7ff 52%,#fff 100%);color:var(--bs-ink);font-family:Nunito,sans-serif;padding:14px}.cbsm-store button,.cbsm-store input,.cbsm-store textarea{font:inherit}.cbsm-store-shell{position:relative;width:100%;max-width:1120px;height:100%;margin:0 auto;background:rgba(255,255,255,.97);border:1px solid rgba(245,201,223,.95);border-radius:30px;box-shadow:var(--bs-shadow);padding:0 22px 32px;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:rgba(216,198,243,.65) transparent;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.cbsm-store-shell::-webkit-scrollbar{width:5px}.cbsm-store-shell::-webkit-scrollbar-track{background:transparent}.cbsm-store-shell::-webkit-scrollbar-thumb{background:rgba(216,198,243,.65);border-radius:999px}.cbsm-store-header{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin:0 -22px 18px;padding:24px 26px 18px;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(245,201,223,.55)}.cbsm-store-kicker,.cbsm-store-modal-kicker{text-transform:uppercase;letter-spacing:.14em;font-weight:900;font-size:12px;color:#b67aa0}.cbsm-store-header h1,.cbsm-store-modal-card h2{font-family:Fredoka,sans-serif;margin:4px 0 5px;color:#55405d}.cbsm-store-header h1{font-size:clamp(32px,7vw,54px)}.cbsm-store-header p{margin:0;color:var(--bs-muted)}.cbsm-store-cart-button,.cbsm-store-dock button,.cbsm-store-primary{border:0;background:linear-gradient(135deg,#e8a9ca,#cbb4ee);color:#fff;border-radius:999px;padding:13px 19px;font-weight:900;box-shadow:0 8px 22px rgba(190,137,188,.2);cursor:pointer}.cbsm-store-search input{width:100%;border:1.5px solid var(--bs-purple);background:rgba(255,255,255,.9);border-radius:22px;padding:15px 18px;outline:none;color:var(--bs-ink);box-shadow:0 7px 25px rgba(112,79,125,.05)}.cbsm-store-search input:focus,.cbsm-store-modal-card input:focus,.cbsm-store-modal-card textarea:focus{border-color:#d49bc4;box-shadow:0 0 0 4px rgba(222,174,207,.16)}.cbsm-store-tags{display:flex;gap:8px;overflow:auto;padding:13px 2px 17px;scrollbar-width:thin}.cbsm-store-tags button{white-space:nowrap;border:1px solid var(--bs-line);background:#fff;border-radius:999px;padding:8px 13px;color:#76677d;font-weight:800}.cbsm-store-tags button.is-active{background:var(--bs-purple2);border-color:var(--bs-purple);color:#705d83}.cbsm-store-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.cbsm-store-product{background:rgba(255,255,255,.95);border:1px solid var(--bs-line);border-radius:26px;overflow:hidden;box-shadow:0 8px 30px rgba(105,75,117,.07);transition:.2s transform,.2s box-shadow}.cbsm-store-product:hover{transform:translateY(-3px);box-shadow:var(--bs-shadow)}.cbsm-store-photo{aspect-ratio:1/1;background:linear-gradient(145deg,var(--bs-pink2),var(--bs-purple2));display:grid;place-items:center;font-size:42px;color:#d9a6c6;overflow:hidden}.cbsm-store-photo img{width:100%;height:100%;object-fit:cover}.cbsm-store-product-body{padding:14px}.cbsm-store-category{text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:900;color:#a68bad}.cbsm-store-product h3{font-family:Fredoka,sans-serif;font-size:18px;margin:3px 0}.cbsm-store-price{font-weight:900;font-size:18px;color:#a66f96}.cbsm-store-product-body>span{display:block;font-size:11px;color:var(--bs-muted);margin-top:2px}.cbsm-store-add{display:flex;align-items:center;gap:8px;margin-top:12px}.cbsm-store-add button,.cbsm-store-cart-controls button{border:1px solid var(--bs-purple);background:var(--bs-purple2);border-radius:12px;min-width:38px;height:38px;font-weight:900;color:#705d83}.cbsm-store-add button.wide{width:100%;border:0;background:linear-gradient(135deg,#f7d7e8,#e4d9f8);color:#6c5875}.cbsm-store-empty{grid-column:1/-1;text-align:center;padding:50px 20px;color:var(--bs-muted);background:#fff;border:1px dashed var(--bs-purple);border-radius:26px}.cbsm-store-dock{position:fixed;z-index:9996;bottom:18px;left:50%;transform:translateX(-50%);width:min(540px,calc(100% - 28px));display:flex;justify-content:space-between;align-items:center;background:rgba(255,255,255,.96);backdrop-filter:blur(16px);border:1px solid var(--bs-line);border-radius:24px;padding:10px 12px 10px 17px;box-shadow:var(--bs-shadow)}.cbsm-store-dock div{display:flex;flex-direction:column}.cbsm-store-dock span{color:var(--bs-muted);font-size:12px}.cbsm-store-modal{display:none;position:fixed;inset:0;z-index:9999}.cbsm-store-modal.open{display:block}.cbsm-store-backdrop{position:absolute;inset:0;background:rgba(53,39,60,.32);backdrop-filter:blur(4px)}.cbsm-store-modal-card{position:absolute;right:0;top:0;height:100%;width:min(520px,100%);overflow:auto;background:#fff;padding:28px 24px 45px;box-shadow:-20px 0 60px rgba(58,40,65,.18);animation:bsSlide .24s ease-out}.cbsm-store-close{float:right;border:0;background:var(--bs-purple2);width:38px;height:38px;border-radius:50%;font-size:25px;color:#796783}.cbsm-store-modal-card h2{font-size:30px}.cbsm-store-cart-list>div{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #f0e8f3}.cbsm-store-cart-list small{display:block;color:var(--bs-muted)}.cbsm-store-cart-controls{display:flex;align-items:center;gap:6px}.cbsm-store-total{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,var(--bs-pink2),var(--bs-purple2));border-radius:18px;padding:16px;margin:18px 0;font-size:18px}.cbsm-store-total strong{font-size:23px}.cbsm-store-primary{width:100%;padding:15px 20px;font-size:16px}.cbsm-store-note{background:#fff8fc;border:1px solid var(--bs-pink);padding:13px 14px;border-radius:17px;color:#786b7d;line-height:1.45}.cbsm-store-modal-card label{display:block;font-weight:900;font-size:13px;margin:13px 0}.cbsm-store-modal-card input,.cbsm-store-modal-card textarea{display:block;width:100%;margin-top:6px;border:1.5px solid var(--bs-purple);border-radius:17px;padding:13px 14px;outline:none;color:var(--bs-ink);background:#fff}.cbsm-store-modal-card textarea{min-height:90px;resize:vertical}.cbsm-store-success{font-size:64px;color:#dda6c8;text-align:center;margin-top:50px}.cbsm-store-toast{position:fixed;z-index:10001;left:50%;bottom:90px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#5f4b68;color:#fff;padding:11px 17px;border-radius:999px;font-weight:800;transition:.2s}.cbsm-store-toast.show{opacity:1;transform:translate(-50%,0)}.cbsm-store-pill{position:absolute;top:10px;left:10px;background:#fff1f8;color:#9b6486;border:1px solid #efc8de;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:900}.cbsm-web-review{margin-top:14px;padding:14px;border:1px solid #e4d0f1;background:#faf5ff;border-radius:18px}.cbsm-status-pending_review{background:#f4eaff!important;color:#75588c!important}
@keyframes bsSlide{from{transform:translateX(35px);opacity:.6}to{transform:none;opacity:1}}
@media(max-width:850px){.cbsm-store-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.cbsm-store{padding:8px}.cbsm-store-shell{height:100%;min-height:0;border-radius:24px;padding:0 10px 24px}.cbsm-store-header{margin:0 -10px 14px;padding:17px 14px 14px}.cbsm-store-header p{font-size:13px}.cbsm-store-cart-button{padding:11px 13px}.cbsm-store-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.cbsm-store-product{border-radius:20px}.cbsm-store-product-body{padding:11px}.cbsm-store-product h3{font-size:16px}.cbsm-store-modal-card{top:auto;bottom:0;height:auto;max-height:92vh;width:100%;border-radius:28px 28px 0 0;padding:23px 18px 36px;animation:bsUp .24s ease-out}.cbsm-store-cart-list>div{grid-template-columns:1fr auto}.cbsm-store-cart-list>div>strong{grid-column:2}.cbsm-store-cart-controls{grid-row:1/3;grid-column:2}.cbsm-store-cart-list>div>strong{display:none}}
@keyframes bsUp{from{transform:translateY(30px);opacity:.6}to{transform:none;opacity:1}}

/* v1.2.1 — bag remove button */
.cbsm-store-cart-controls button[data-remove]{font-size:16px;line-height:1;background:#fff2f7;border-color:#f0c8dc;color:#a65f84}
/* v1.2.2 — all storefront buttons show pointer cursor */
.cbsm-store button,
.cbsm-store [role="button"]{cursor:pointer}



/* ========================================
   v1.2.3 — cute motion + custom confirms
   ======================================== */

/* Every interactive control should feel clickable. */
.cbsm-store button,
.cbsm-store [role="button"],
.cbsm-store-tags button,
.cbsm-store-product,
.cbsm-store-cart-button{
    cursor:pointer;
}

/* Gentle button lift + squish. */
.cbsm-store button{
    transition:transform .18s cubic-bezier(.2,.85,.35,1.35),
               box-shadow .18s ease,
               filter .18s ease,
               background .18s ease;
    transform-origin:center;
}
.cbsm-store button:hover{transform:translateY(-2px) scale(1.025);filter:saturate(1.05)}
.cbsm-store button:active{transform:translateY(0) scale(.94)}
.cbsm-store button:focus-visible{outline:3px solid rgba(216,198,243,.5);outline-offset:3px}
.cbsm-cute-tap{animation:cbsmButtonBoop .38s cubic-bezier(.2,.9,.3,1.4)}

/* Product cards arrive like little bubbles. */
.cbsm-store-product{animation:cbsmCardBubble .48s cubic-bezier(.18,.9,.32,1.22) both}
.cbsm-store-product:nth-child(2n){animation-delay:.035s}
.cbsm-store-product:nth-child(3n){animation-delay:.07s}
.cbsm-store-product:nth-child(4n){animation-delay:.105s}
.cbsm-store-product:hover{transform:translateY(-5px) scale(1.015)}
.cbsm-store-product:hover .cbsm-store-photo img{transform:scale(1.035)}
.cbsm-store-photo img{transition:transform .35s cubic-bezier(.2,.8,.3,1.15)}

/* Letter-by-letter boutique title entrance. */
.cbsm-title-letter{
    display:inline-block;
    opacity:0;
    transform:translateY(-18px) rotate(-12deg) scale(.7);
    animation:cbsmLetterRoll .58s cubic-bezier(.2,.9,.25,1.35) forwards;
    animation-delay:calc(var(--i) * 55ms + 90ms);
    transform-origin:50% 80%;
}

/* Bag dock floats in instead of appearing abruptly. */
.cbsm-store-dock{
    opacity:0;
    pointer-events:none;
    transform:translate(-50%,28px) scale(.88);
    transition:opacity .25s ease,
               transform .42s cubic-bezier(.18,.9,.28,1.35);
}
.cbsm-store-dock.is-visible{
    opacity:1;
    pointer-events:auto;
    transform:translate(-50%,0) scale(1);
}
.cbsm-store-dock.is-visible::before{
    content:"♡";
    position:absolute;
    top:-12px;
    right:24px;
    color:#dca0c5;
    font-size:18px;
    animation:cbsmTinyFloat 2.7s ease-in-out infinite;
}

/* Modal backdrop and panel now animate both OPEN and CLOSED. */
.cbsm-store-modal{display:block;visibility:hidden;pointer-events:none}
.cbsm-store-modal.open{visibility:visible;pointer-events:auto}
.cbsm-store-backdrop{
    opacity:0;
    transition:opacity .28s ease;
}
.cbsm-store-modal.open .cbsm-store-backdrop{opacity:1}
.cbsm-store-modal-card{
    animation:none;
    opacity:0;
    transform:translateX(108%) scale(.96);
    transform-origin:right center;
    transition:transform .46s cubic-bezier(.18,.92,.3,1.22),
               opacity .22s ease;
}
.cbsm-store-modal.open .cbsm-store-modal-card{
    opacity:1;
    transform:translateX(0) scale(1);
}
.cbsm-store-modal.opening .cbsm-store-modal-card{
    transform:translateX(108%) scale(.94);
}
.cbsm-store-modal.closing .cbsm-store-backdrop{opacity:0}
.cbsm-store-modal.closing .cbsm-store-modal-card{
    opacity:0;
    transform:translateX(108%) scale(.94);
    transition-timing-function:cubic-bezier(.55,.02,.8,.35);
    transition-duration:.3s;
}
.cbsm-content-pop{animation:cbsmContentPop .34s cubic-bezier(.18,.9,.3,1.28)}

/* Cute custom remove confirmation — no browser/system dialog. */
.cbsm-confirm-wrap{
    min-height:70vh;
    display:flex;
    flex-direction:column;
    justify-content:center;
    text-align:center;
    padding:28px 10px;
}
.cbsm-confirm-bubble{
    width:84px;
    height:84px;
    margin:0 auto 18px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:linear-gradient(145deg,#fff0f7,#f0e7ff);
    border:1px solid #edd3e5;
    color:#c97ca9;
    font-family:Fredoka,sans-serif;
    font-size:44px;
    box-shadow:0 16px 35px rgba(165,101,147,.13);
    animation:cbsmConfirmBubble 2.4s ease-in-out infinite;
}
.cbsm-confirm-text{
    margin:4px auto 24px;
    max-width:330px;
    color:var(--bs-muted);
    line-height:1.55;
}
.cbsm-confirm-text strong{color:#695272}
.cbsm-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:360px;width:100%;margin:0 auto}
.cbsm-store-soft,
.cbsm-store-danger{
    border:0;
    border-radius:18px;
    padding:14px 16px;
    font-weight:900;
}
.cbsm-store-soft{background:#f5effc;color:#755f84}
.cbsm-store-danger{background:linear-gradient(135deg,#f7c9db,#e9b5d1);color:#7e405f;box-shadow:0 8px 20px rgba(182,101,143,.13)}

/* Tiny extra polish. */
.cbsm-store-cart-button span{
    display:inline-grid;
    min-width:22px;
    height:22px;
    place-items:center;
    padding:0 6px;
    border-radius:999px;
    background:rgba(255,255,255,.24);
    transition:transform .22s cubic-bezier(.2,.9,.3,1.35);
}
.cbsm-store-add strong,
.cbsm-store-cart-controls b{display:inline-block}
.cbsm-store-toast.show{animation:cbsmToastBoop .35s cubic-bezier(.18,.9,.3,1.25)}
.cbsm-store-success{animation:cbsmHeartHappy 1.35s ease-in-out infinite}

@keyframes cbsmButtonBoop{
    0%{transform:scale(1)}
    38%{transform:scale(.9)}
    72%{transform:scale(1.08)}
    100%{transform:scale(1)}
}
@keyframes cbsmCardBubble{
    from{opacity:0;transform:translateY(18px) scale(.91)}
    70%{opacity:1;transform:translateY(-2px) scale(1.015)}
    to{opacity:1;transform:none}
}
@keyframes cbsmLetterRoll{
    0%{opacity:0;transform:translateY(-18px) rotate(-14deg) scale(.65)}
    68%{opacity:1;transform:translateY(3px) rotate(4deg) scale(1.08)}
    100%{opacity:1;transform:none}
}
@keyframes cbsmTinyFloat{
    0%,100%{transform:translateY(0) rotate(-7deg)}
    50%{transform:translateY(-6px) rotate(7deg)}
}
@keyframes cbsmContentPop{
    from{opacity:.25;transform:translateY(9px) scale(.985)}
    70%{opacity:1;transform:translateY(-2px) scale(1.008)}
    to{opacity:1;transform:none}
}
@keyframes cbsmConfirmBubble{
    0%,100%{transform:translateY(0) rotate(-3deg) scale(1)}
    50%{transform:translateY(-7px) rotate(3deg) scale(1.04)}
}
@keyframes cbsmQtyPop{
    from{transform:scale(.65);opacity:.45}
    75%{transform:scale(1.18);opacity:1}
    to{transform:scale(1)}
}
@keyframes cbsmToastBoop{
    from{transform:translate(-50%,12px) scale(.9)}
    70%{transform:translate(-50%,-3px) scale(1.025)}
    to{transform:translate(-50%,0) scale(1)}
}
@keyframes cbsmHeartHappy{
    0%,100%{transform:translateY(0) scale(1) rotate(-3deg)}
    50%{transform:translateY(-7px) scale(1.08) rotate(3deg)}
}

@media(max-width:620px){
    .cbsm-store-modal-card{
        transform:translateY(105%) scale(.97);
        transform-origin:center bottom;
        transition:transform .48s cubic-bezier(.18,.92,.3,1.22),opacity .22s ease;
    }
    .cbsm-store-modal.open .cbsm-store-modal-card{transform:translateY(0) scale(1)}
    .cbsm-store-modal.opening .cbsm-store-modal-card{transform:translateY(105%) scale(.96)}
    .cbsm-store-modal.closing .cbsm-store-modal-card{transform:translateY(105%) scale(.96)}
    .cbsm-confirm-wrap{min-height:54vh}
}

/* ========================================
   v1.2.4 — calm quantity changes
   ======================================== */

/* Quantity changes update only their controls now, so product cards and
   cart rows stay visually still while the +/- button gets the cute tap. */
.cbsm-store-add strong,
.cbsm-store-cart-controls b{
    animation:none!important;
}

/* Give the floating View Bag dock a little breathing room from the
   permanent app border on desktop. */
@media(min-width:621px){
    .cbsm-store-dock{bottom:30px}
}



/* ========================================
   v1.2.5 — cute button press + no blue tap flash
   ======================================== */

/* Remove the native blue/gray mobile tap flash while keeping keyboard
   focus styling intact for accessibility. */
.cbsm-store,
.cbsm-store *{
    -webkit-tap-highlight-color:transparent;
}
.cbsm-store button,
.cbsm-store a,
.cbsm-store [role="button"]{
    -webkit-touch-callout:none;
}

/* Every storefront button gets the same tiny press-zoom.  Using the
   standalone scale property means this does not fight the drawer/card
   transform animations already used elsewhere in the storefront. */
.cbsm-store button{
    scale:1;
    transition:scale .16s cubic-bezier(.2,.9,.3,1.35),
               box-shadow .18s ease,
               background-color .18s ease,
               border-color .18s ease,
               color .18s ease;
    transform-origin:center;
}
.cbsm-store button:active{
    scale:1.10;
}

/* Quantity controls are small, so give them a slightly punchier press. */
.cbsm-store-add button:active,
.cbsm-store-cart-controls button:active{
    scale:1.14;
}

/* Respect accessibility preferences without losing polish. */
@media(prefers-reduced-motion:reduce){
    .cbsm-store *,
    .cbsm-store *::before,
    .cbsm-store *::after{
        animation-duration:.01ms!important;
        animation-iteration-count:1!important;
        transition-duration:.01ms!important;
        scroll-behavior:auto!important;
    }
}


/* ========================================
   v1.2.6 — softer button motion everywhere
   ======================================== */

/* Desktop hover should glide instead of snapping. */
.cbsm-store button{
    scale:1;
    transition:
        transform .34s cubic-bezier(.22,.72,.28,1),
        scale .34s cubic-bezier(.22,.72,.28,1),
        box-shadow .34s ease,
        filter .34s ease,
        background-color .30s ease,
        border-color .30s ease,
        color .30s ease;
    transform-origin:center;
    will-change:transform,scale;
}

@media (hover:hover) and (pointer:fine){
    .cbsm-store button:hover{
        transform:translateY(-2px);
        scale:1.035;
        filter:saturate(1.045);
    }
}

/* Do not rely on :active for touch animation. JS adds this class on every
   real click/tap so phones and tablets get the same cute feedback. */
.cbsm-store button:active{
    scale:1;
}
.cbsm-store button.cbsm-button-pop{
    animation:cbsmButtonSoftPop .42s cubic-bezier(.2,.72,.28,1) both;
}

/* Small quantity buttons can be just a touch more expressive. */
.cbsm-store-add button.cbsm-button-pop,
.cbsm-store-cart-controls button.cbsm-button-pop{
    animation-name:cbsmQtyButtonSoftPop;
}

@keyframes cbsmButtonSoftPop{
    0%{scale:1}
    34%{scale:1.085}
    68%{scale:.985}
    100%{scale:1}
}
@keyframes cbsmQtyButtonSoftPop{
    0%{scale:1}
    32%{scale:1.14}
    68%{scale:.975}
    100%{scale:1}
}

/* Continue suppressing the native mobile highlight. */
.cbsm-store,
.cbsm-store *{
    -webkit-tap-highlight-color:transparent;
}

/* =========================================================
   v1.3.0 — Product galleries + cute variation chips
   ========================================================= */
.cbsm-store-photo{position:relative}
.cbsm-photo-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:34px;height:34px;border:1px solid rgba(237,206,225,.95);border-radius:50%;background:rgba(255,255,255,.92);color:#875f7e;font-size:25px;line-height:1;box-shadow:0 4px 14px rgba(77,54,85,.12);backdrop-filter:blur(6px)}
.cbsm-photo-prev{left:8px}.cbsm-photo-next{right:8px}
.cbsm-photo-dots{position:absolute;left:50%;bottom:9px;transform:translateX(-50%);z-index:3;display:flex;gap:5px;padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.72);backdrop-filter:blur(6px)}
.cbsm-photo-dots span{width:6px;height:6px;border-radius:50%;background:#dbcbe5;transition:transform .25s ease,background .25s ease}
.cbsm-photo-dots span.is-active{background:#b77c9f;transform:scale(1.35)}
.cbsm-store-variants{margin-top:11px}
.cbsm-store-variant-label{font-size:11px;font-weight:900;color:#8c748f;margin-bottom:6px}
.cbsm-store-variant-chips{display:flex;gap:6px;flex-wrap:wrap}
.cbsm-store-variant-chips button{min-height:32px;border:1px solid #e1d3ed;border-radius:999px;background:#fbf8ff;color:#78677f;padding:6px 10px;font-size:11px;font-weight:900;transition:transform .32s cubic-bezier(.2,.8,.3,1.25),background .3s ease,border-color .3s ease,box-shadow .3s ease}
.cbsm-store-variant-chips button:hover{transform:translateY(-2px) scale(1.025);box-shadow:0 5px 14px rgba(107,79,119,.09)}
.cbsm-store-variant-chips button.is-active{background:linear-gradient(135deg,#fff0f7,#f0e9ff);border-color:#d5afd0;color:#845e7c;box-shadow:0 4px 12px rgba(171,123,164,.12)}
.cbsm-store-variant-chips button:disabled{opacity:.48;cursor:not-allowed;text-decoration:line-through;transform:none;box-shadow:none}
.cbsm-store-add button:disabled{opacity:.6;cursor:default}
.cbsm-cart-variation{font-weight:900;color:#9a6f8c!important;margin-bottom:2px}
@media(max-width:700px){
  .cbsm-photo-nav{width:32px;height:32px}
  .cbsm-store-variant-chips button{padding:7px 11px}
}


/* =========================================================
   v1.4.0 — product detail popup + color swatches
   ========================================================= */
.cbsm-store-product-clickable{cursor:pointer}
.cbsm-store-product-clickable:focus-visible{outline:3px solid rgba(203,180,238,.55);outline-offset:3px}
.cbsm-store-view{width:100%;margin-top:12px;border:0;border-radius:14px;padding:10px 12px;background:linear-gradient(135deg,#f7d7e8,#e4d9f8);color:#6c5875;font-weight:900}
.cbsm-store-option-note{margin-top:5px;font-size:11px;font-weight:800;color:#927f99}
.cbsm-product-detail{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(240px,.9fr);gap:22px;align-items:start;margin-top:18px}
.cbsm-product-detail-info h2{margin-top:4px}
.cbsm-detail-photo{position:relative;aspect-ratio:1/1;border-radius:24px;overflow:hidden;background:linear-gradient(145deg,var(--bs-pink2),var(--bs-purple2));display:grid;place-items:center;color:#d9a6c6;font-size:60px}
.cbsm-detail-photo>img{width:100%;height:100%;object-fit:cover}
.cbsm-detail-photo-empty{min-height:280px}
.cbsm-detail-thumbs{position:absolute;left:10px;right:10px;bottom:10px;display:flex;gap:7px;overflow-x:auto;padding:7px;border-radius:16px;background:rgba(255,255,255,.8);backdrop-filter:blur(8px)}
.cbsm-detail-thumbs button{flex:0 0 48px;width:48px;height:48px;padding:0;border:2px solid transparent;border-radius:11px;overflow:hidden;background:#fff;opacity:.72}
.cbsm-detail-thumbs button.is-active{border-color:#ce9fc1;opacity:1;transform:scale(1.04)}
.cbsm-detail-thumbs img{width:100%;height:100%;object-fit:cover}
.cbsm-detail-price{font-size:24px;font-weight:900;color:#a66f96;margin:4px 0}
.cbsm-detail-stock{font-size:12px;color:var(--bs-muted);font-weight:800}
.cbsm-detail-add{display:flex;align-items:center;gap:8px;margin-top:16px}
.cbsm-detail-add button{border:1px solid var(--bs-purple);background:var(--bs-purple2);border-radius:13px;min-width:42px;height:42px;font-weight:900;color:#705d83}
.cbsm-detail-add button.wide{width:100%;border:0;background:linear-gradient(135deg,#f7d7e8,#e4d9f8);color:#6c5875}
.cbsm-store-variants.has-swatches .cbsm-store-variant-chips{gap:10px}
.cbsm-store-variant-chips .cbsm-color-swatch{display:flex;flex-direction:column;align-items:center;gap:4px;padding:3px!important;border:0!important;background:transparent!important;min-width:48px;height:auto;box-shadow:none!important;text-decoration:none!important}
.cbsm-color-swatch>span{display:block;width:34px;height:34px;border-radius:50%;background:var(--swatch);border:3px solid #fff;box-shadow:0 0 0 1.5px #dfd2e6,0 3px 9px rgba(83,58,91,.12);transition:transform .28s cubic-bezier(.2,.8,.3,1.25),box-shadow .28s ease}
.cbsm-color-swatch>small{max-width:62px;font-size:10px;font-weight:900;color:#78677f;line-height:1.1;text-align:center}
.cbsm-color-swatch.is-active>span{transform:scale(1.13);box-shadow:0 0 0 3px #fff,0 0 0 5px #d3a9ca,0 5px 12px rgba(117,78,108,.17)}
.cbsm-color-swatch:disabled>span{opacity:.28;filter:grayscale(.4)}
.cbsm-color-swatch:disabled>small{text-decoration:line-through;opacity:.5}
@media(max-width:700px){
  .cbsm-product-detail{grid-template-columns:1fr;gap:15px}
  .cbsm-detail-photo{border-radius:20px}
  .cbsm-detail-thumbs button{flex-basis:44px;width:44px;height:44px}
  .cbsm-product-detail-info h2{font-size:27px}
}
@media(min-width:701px){
  .cbsm-store-modal-card:has(.cbsm-product-detail){width:min(760px,100%)}
}


/* =========================================================
   v1.4.1 — calm slide-outs + centered gallery arrows
   ========================================================= */
/* Slide-out panels move only in/out. Internal button actions no longer make
   the whole panel scale/pop again. */
.cbsm-store-modal-card{
  transform:translateX(108%);
  transform-origin:right center;
  transition:transform .42s cubic-bezier(.22,.8,.32,1),opacity .22s ease;
}
.cbsm-store-modal.open .cbsm-store-modal-card{transform:translateX(0)}
.cbsm-store-modal.opening .cbsm-store-modal-card{transform:translateX(108%)}
.cbsm-store-modal.closing .cbsm-store-modal-card{
  transform:translateX(108%);
  transition-timing-function:cubic-bezier(.55,.02,.8,.35);
}
.cbsm-content-pop{animation:none!important}

.cbsm-photo-nav{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 0 2px;
  line-height:1;
  font-family:Arial,sans-serif;
}

@media(max-width:620px){
  .cbsm-store-modal-card{
    transform:translateY(105%);
    transform-origin:center bottom;
    transition:transform .44s cubic-bezier(.22,.8,.32,1),opacity .22s ease;
  }
  .cbsm-store-modal.open .cbsm-store-modal-card{transform:translateY(0)}
  .cbsm-store-modal.opening .cbsm-store-modal-card{transform:translateY(105%)}
  .cbsm-store-modal.closing .cbsm-store-modal-card{transform:translateY(105%)}
}


/* =========================================================
   v1.4.2 — storefront gallery + variant polish
   ========================================================= */
/* Gallery arrows stay centered on hover/press: only scale, never slide. */
.cbsm-photo-nav:hover{transform:translateY(-50%) scale(1.07)!important;filter:saturate(1.05)}
.cbsm-photo-nav:active{transform:translateY(-50%) scale(.96)!important}

/* No carousel dots; arrows are enough. */
.cbsm-photo-dots{display:none!important}

/* Product detail gallery: thumbnails live below the photo instead of covering it. */
.cbsm-detail-gallery{min-width:0}
.cbsm-detail-photo{overflow:hidden}
.cbsm-detail-image-button{display:block;width:100%;height:100%;padding:0!important;border:0!important;background:transparent!important;border-radius:0!important;box-shadow:none!important;transform:none!important;overflow:hidden}
.cbsm-detail-image-button:hover,.cbsm-detail-image-button:active{transform:none!important;filter:none!important}
.cbsm-detail-image-button>img{width:100%;height:100%;object-fit:cover;display:block}
.cbsm-detail-thumbs{position:static;display:flex;gap:8px;overflow-x:auto;padding:9px 2px 2px;margin-top:8px;background:transparent;backdrop-filter:none;border-radius:0}
.cbsm-detail-thumbs button:hover{transform:scale(1.04)!important}
.cbsm-detail-zoom-note{text-align:center;margin-top:7px;font-size:11px;font-weight:800;color:var(--bs-muted)}

/* Colors stay on one horizontal row. Non-color options sit below. */
.cbsm-store-color-row{display:flex;gap:12px;overflow-x:auto;padding:8px 4px 10px;scrollbar-width:thin}
.cbsm-store-text-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.cbsm-store-text-options button{border:1px solid var(--bs-purple);background:#fff;border-radius:999px;padding:8px 12px;color:#755f80;font-weight:900}
.cbsm-store-text-options button.is-active{background:var(--bs-purple2);border-color:#caa7d6;box-shadow:0 0 0 2px rgba(202,167,214,.18)}

/* Keep the selected ring tight to the color, and give its label room below. */
.cbsm-store-variant-chips .cbsm-color-swatch,
.cbsm-store-color-row .cbsm-color-swatch{gap:8px;min-width:50px}
.cbsm-color-swatch>small{margin-top:1px}
.cbsm-color-swatch.is-active>span{transform:scale(1.07);box-shadow:0 0 0 2px #fff,0 0 0 3.5px #d3a9ca,0 4px 10px rgba(117,78,108,.14)}

/* Full-screen close-up viewer for tiny bead details. */
.cbsm-image-viewer{position:fixed;inset:0;z-index:10050;background:rgba(35,25,39,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;backdrop-filter:blur(8px)}
.cbsm-image-viewer-stage{position:relative;display:flex;align-items:center;justify-content:center;width:min(96vw,1100px);height:min(82vh,900px)}
.cbsm-image-viewer-stage>img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:18px;box-shadow:0 22px 70px rgba(0,0,0,.34)}
.cbsm-image-viewer-close{position:fixed;top:18px;right:18px;width:44px;height:44px;border:0;border-radius:50%;background:rgba(255,255,255,.94);color:#755f80;font-size:28px;font-weight:900;z-index:2}
.cbsm-image-viewer-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border:0;border-radius:50%;background:rgba(255,255,255,.94);color:#755f80;font-size:30px;line-height:1;display:flex;align-items:center;justify-content:center;padding:0 0 3px}
.cbsm-image-viewer-nav.prev{left:10px}.cbsm-image-viewer-nav.next{right:10px}
.cbsm-image-viewer-nav:hover{transform:translateY(-50%) scale(1.07)!important}.cbsm-image-viewer-nav:active{transform:translateY(-50%) scale(.96)!important}
.cbsm-image-viewer-caption{margin-top:12px;color:#fff;font-weight:900;font-size:13px;text-align:center}
@media(max-width:620px){.cbsm-image-viewer{padding:12px}.cbsm-image-viewer-stage{width:100%;height:80vh}.cbsm-image-viewer-nav{width:40px;height:40px}.cbsm-image-viewer-nav.prev{left:4px}.cbsm-image-viewer-nav.next{right:4px}}


/* =========================================================
   v1.4.3 — clean arrows + stable galleries + zoom viewer
   ========================================================= */
/* Bare arrows only: no circle/bubble on product cards or product details. */
.cbsm-photo-nav{
  width:auto!important;height:auto!important;min-width:0!important;
  border:0!important;border-radius:0!important;background:transparent!important;
  box-shadow:none!important;backdrop-filter:none!important;
  padding:4px 7px!important;color:#875f7e;font-size:30px!important;
  text-shadow:0 1px 4px rgba(255,255,255,.9),0 1px 8px rgba(69,44,76,.16);
}
.cbsm-photo-nav:hover{transform:translateY(-50%) scale(1.08)!important;filter:none!important;background:transparent!important;box-shadow:none!important}
.cbsm-photo-nav:active{transform:translateY(-50%) scale(.96)!important}

/* Keep transient image motion from creating browser scrollbars. */
.cbsm-store-modal-card{overflow-x:hidden!important}
.cbsm-store-photo,.cbsm-detail-photo{overflow:hidden!important}
.cbsm-detail-thumbs{scrollbar-width:none;overscroll-behavior-x:contain}
.cbsm-detail-thumbs::-webkit-scrollbar{display:none}

/* Keep color choices visually open — no surrounding group box. */
.cbsm-store-color-row{background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important}

/* Enlarged photo can be wheel-zoomed or pinch-zoomed. */
.cbsm-image-viewer-stage{overflow:hidden;touch-action:none;cursor:zoom-in}
.cbsm-image-viewer-stage.is-zoomed{cursor:zoom-out}
.cbsm-image-viewer-stage>img{transform-origin:center center;will-change:transform;transition:transform .12s ease-out;user-select:none;-webkit-user-drag:none;touch-action:none}
.cbsm-image-viewer-help{margin-top:7px;color:rgba(255,255,255,.78);font-size:11px;font-weight:800;text-align:center}
.cbsm-store-color-row{scrollbar-width:none}
.cbsm-store-color-row::-webkit-scrollbar{display:none}


/* =========================================================
   v1.4.4 — cleaner color choices + reliable photo viewer
   ========================================================= */
/* Color choices should float naturally in the details panel — no group box. */
.cbsm-store-variants,
.cbsm-store-variants.has-swatches,
.cbsm-store-color-row{
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  border-radius:0!important;
}
.cbsm-store-variants{padding:0!important}
.cbsm-store-color-row{margin-left:0!important;margin-right:0!important}

/* Enlarged photo always stays behind its controls, even while zoomed. */
.cbsm-image-viewer-stage>img{
  position:relative;
  z-index:1;
  pointer-events:none;
}
.cbsm-image-viewer-nav{
  z-index:6!important;
  pointer-events:auto!important;
}
.cbsm-image-viewer-close{
  z-index:7!important;
  pointer-events:auto!important;
}

/* Store cards: no image zoom. Use a soft card shadow instead. */
.cbsm-store-product:hover{
  transform:none!important;
  box-shadow:0 14px 38px rgba(105,75,117,.16)!important;
}
.cbsm-store-product:hover .cbsm-store-photo img{
  transform:none!important;
}
.cbsm-store-photo img{
  transform:none;
  transition:none!important;
}


/* =========================================================
   v1.4.5 — truly bare color swatches + repeatable viewer zoom
   ========================================================= */
/* Remove the actual button chrome around each color choice. Only the
   circular swatch and its label should be visible. */
.cbsm-store-color-row button.cbsm-color-swatch,
.cbsm-store-variant-chips button.cbsm-color-swatch{
  -webkit-appearance:none!important;
  appearance:none!important;
  border:0!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:0!important;
  padding:3px!important;
  margin:0!important;
}
.cbsm-store-color-row button.cbsm-color-swatch:hover,
.cbsm-store-color-row button.cbsm-color-swatch:active,
.cbsm-store-color-row button.cbsm-color-swatch:focus,
.cbsm-store-variant-chips button.cbsm-color-swatch:hover,
.cbsm-store-variant-chips button.cbsm-color-swatch:active,
.cbsm-store-variant-chips button.cbsm-color-swatch:focus{
  border:0!important;
  outline:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

/* =========================================================
   v1.4.8 — definitive swatch alignment
   ========================================================= */
/* The wrapper never moves. Bubble + label share one exact center line. */
.cbsm-store-color-row button.cbsm-color-swatch,
.cbsm-store-variant-chips button.cbsm-color-swatch{
  -webkit-appearance:none!important;
  appearance:none!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
  width:64px!important;
  min-width:64px!important;
  height:auto!important;
  gap:9px!important;
  padding:3px 0!important;
  margin:0!important;
  border:0!important;
  outline:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  transform:none!important;
  scale:1!important;
  filter:none!important;
  transition:none!important;
  animation:none!important;
}
.cbsm-store-color-row button.cbsm-color-swatch>span,
.cbsm-store-variant-chips button.cbsm-color-swatch>span{
  flex:0 0 auto!important;
  width:34px!important;
  height:34px!important;
  margin:0!important;
  transform-origin:center!important;
  transition:transform .28s cubic-bezier(.2,.8,.3,1.25),box-shadow .28s ease!important;
}
.cbsm-store-color-row button.cbsm-color-swatch>small,
.cbsm-store-variant-chips button.cbsm-color-swatch>small{
  display:block!important;
  width:64px!important;
  max-width:64px!important;
  min-width:64px!important;
  margin:0!important;
  padding:0!important;
  text-align:center!important;
  line-height:1.1!important;
  transform:none!important;
  scale:1!important;
  transition:none!important;
  animation:none!important;
}
/* Selection belongs to the bubble only, with enough gap to clear the label. */
.cbsm-store-color-row button.cbsm-color-swatch.is-active>span,
.cbsm-store-variant-chips button.cbsm-color-swatch.is-active>span{
  transform:scale(1.07)!important;
  box-shadow:0 0 0 2px #fff,0 0 0 3.5px #d3a9ca,0 4px 10px rgba(117,78,108,.14)!important;
}
@media (hover:hover) and (pointer:fine){
  .cbsm-store-color-row button.cbsm-color-swatch:hover,
  .cbsm-store-variant-chips button.cbsm-color-swatch:hover{
    transform:none!important;
    scale:1!important;
    filter:none!important;
  }
  .cbsm-store-color-row button.cbsm-color-swatch:hover>small,
  .cbsm-store-variant-chips button.cbsm-color-swatch:hover>small{
    transform:none!important;
    scale:1!important;
  }
  .cbsm-store-color-row button.cbsm-color-swatch:hover>span,
  .cbsm-store-variant-chips button.cbsm-color-swatch:hover>span{
    transform:scale(1.10)!important;
  }
  .cbsm-store-color-row button.cbsm-color-swatch.is-active:hover>span,
  .cbsm-store-variant-chips button.cbsm-color-swatch.is-active:hover>span{
    transform:scale(1.12)!important;
  }
}
/* Zoomed photos can be dragged/panned with one finger or mouse. */
.cbsm-image-viewer-stage.is-zoomed{cursor:grab}
.cbsm-image-viewer-stage.is-panning{cursor:grabbing}
.cbsm-image-viewer-stage>img{touch-action:none}


/* v1.5.0 — multi-variation quantity selection in product detail */
.cbsm-detail-add:has(.cbsm-variation-qty-list),.cbsm-detail-add:has(.cbsm-variation-help){display:block}
.cbsm-variation-help{width:100%;padding:11px 13px;border:1px dashed var(--bs-purple);border-radius:13px;color:#8c748f;font-size:12px;font-weight:800;text-align:center}
.cbsm-variation-qty-list{display:grid;gap:8px;width:100%}
.cbsm-variation-qty-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;background:#fffafd;border:1px solid #f0ddea;border-radius:14px}
.cbsm-variation-qty-row>span{font-size:12px;font-weight:900;color:#705d83}
.cbsm-variation-stepper{display:flex;align-items:center;gap:9px;flex:0 0 auto}
.cbsm-variation-stepper button{width:34px;min-width:34px;height:34px;border:1px solid var(--bs-purple);background:var(--bs-purple2);border-radius:11px;color:#705d83;font-weight:900}
.cbsm-variation-stepper strong{min-width:20px;text-align:center;color:#5f4b68}


/* v1.4.25 — circular close control pinned to the Store popup corner while scrolling. */
.cbsm-store-close {
  position: sticky !important;
  top: 0 !important;
  right: 0 !important;
  z-index: 50 !important;
  float: right !important;
  width: 40px !important;
  height: 40px !important;
  min-width: 40px !important;
  padding: 0 !important;
  border-radius: 50% !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  margin-top: -12px !important;
  margin-right: -10px !important;
  background: #fff !important;
  border: 1px solid var(--bs-purple) !important;
  box-shadow: 0 7px 20px rgba(92,67,104,.16) !important;
}

/* v1.4.27 — equal-height storefront cards and bottom-aligned actions. */
.cbsm-store-grid{align-items:stretch}
.cbsm-store-product{display:flex;flex-direction:column;height:100%}
.cbsm-store-product-body{display:flex;flex-direction:column;flex:1;min-height:0}
.cbsm-store-product-body .cbsm-store-view{margin-top:auto;padding-top:11px;padding-bottom:11px}
.cbsm-store-product-body .cbsm-store-option-note{margin-bottom:12px}
.cbsm-store-product-body .cbsm-store-price{margin-bottom:8px}

/* v1.4.29 — discreet login beside the boutique subtitle. */
.cbsm-store-kicker-row{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px}
.cbsm-store-header-actions{flex-shrink:0}
.cbsm-store .cbsm-store-login-button{display:inline-flex;align-items:center;padding:3px 0;border:0;background:transparent;color:#8b7d91;font:inherit;font-size:11px;font-weight:700;line-height:1.4;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.cbsm-store .cbsm-store-login-button:hover{color:#a66f96}
.cbsm-store .cbsm-store-login-button:focus-visible{outline:2px solid #b67aa0;outline-offset:3px;border-radius:2px}
.cbsm-store-header-actions .cbsm-store-cart-button{white-space:nowrap}
@media(max-width:620px){.cbsm-store-header{gap:10px}}