/* CT Elementor Widgets — ClaraTrade India. All classes namespaced .ctew-* to avoid conflicts. */
.ctew-notice{padding:16px;background:#fff6f8;border:1px solid #ffd6e2;border-radius:8px;color:#b4004e;font-size:14px}
.ctew-carousel{position:relative}
.ctew-viewport{overflow:hidden;max-width:100%}
/* Page builders (Elementor included) sometimes force overflow:visible on a
   selected/hovered element in the editor canvas so its own selection
   outline and resize handles aren't clipped. That's fine for most widgets,
   but here it defeats the one job this rule has — hiding whatever the
   carousel track pushes past its own box — which is why a carousel could
   look fine on the live site yet show a sliver of overflow only inside the
   Elementor editor. The !important makes sure this specific clip always
   wins regardless of what else targets the element while it's selected. */
.ctew-viewport{overflow:hidden!important}
/* Edge Peek (CT_Controls::navigation() "Edge Peek" control) — padding sits
   INSIDE the viewport's own overflow:hidden edge, so the next/prev slide's
   sliver shows through that reserved space instead of being clipped,
   without changing the track/step math the JS carousel already relies on. */
.ctew-viewport.ctew-peek-left{padding-left:var(--ctew-peek,40px)}
.ctew-viewport.ctew-peek-right{padding-right:var(--ctew-peek,40px)}
.ctew-viewport.ctew-peek-both{padding-left:var(--ctew-peek,40px);padding-right:var(--ctew-peek,40px)}
/* Reserves vertical room so the "Whole Card" hover effect (zoom/lift) isn't
   clipped by this viewport's own overflow:hidden (needed for the
   horizontal slide) — see CT_Controls::hover_viewport_class(). */
.ctew-viewport.ctew-hoverfx-viewport{padding-top:28px;padding-bottom:28px;margin-top:-28px;margin-bottom:-28px}
/* Shared "Hover Effect" (CT_Controls::hover_effect()) — used by CT Product
   Carousel and CT Card Grid. Classes only ever render when the widget's
   "Apply To" is explicitly set to something other than "None", so nothing
   here affects a widget left at its default settings. */
.ctew-hoverfx-card-zoom,.ctew-hoverfx-card-lift,.ctew-hoverfx-card-zoom_lift{transition:transform .25s ease,box-shadow .25s ease;will-change:transform}
.ctew-hoverfx-card-zoom:hover{transform:scale(var(--ctew-hover-scale,1.05));position:relative;z-index:2}
.ctew-hoverfx-card-lift:hover{transform:translateY(calc(-1 * var(--ctew-hover-lift,8px)));position:relative;z-index:2}
.ctew-hoverfx-card-zoom_lift:hover{transform:scale(var(--ctew-hover-scale,1.05)) translateY(calc(-1 * var(--ctew-hover-lift,8px)));position:relative;z-index:2}
.ctew-hoverfx-image-zoom{overflow:hidden}
.ctew-hoverfx-image-zoom img,.ctew-hoverfx-image-zoom video{transition:transform .35s ease}
/* Hovering the CARD (the image-zoom element's direct parent) is what
   triggers it — matches "hover the card, only the image reacts" rather than
   requiring the cursor to be precisely over the image itself. */
*:hover>.ctew-hoverfx-image-zoom img,*:hover>.ctew-hoverfx-image-zoom video{transform:scale(var(--ctew-hover-scale,1.08))}
.ctew-track{display:flex;gap:var(--ctew-gap,16px);touch-action:pan-y;cursor:grab;user-select:none}
.ctew-track:active{cursor:grabbing}
/* Slide width now derives from the same --ctew-gap variable the gap control
   sets (see ct-controls.php), instead of a hardcoded 16px — a mismatch here
   was what made slides visibly get cut off once the gap was changed. */
.ctew-slide{flex:0 0 calc((100% - (var(--cols,5) - 1) * var(--ctew-gap,16px)) / var(--cols,5));min-width:0;box-sizing:border-box}
.ctew-static .ctew-track{flex-wrap:wrap;transform:none!important;cursor:default}
.ctew-static .ctew-nav,.ctew-static .ctew-dots,.ctew-static .ctew-progress{display:none!important}
/* Arrows — width/height/padding come from Elementor controls (equal size = true circle/square) */
.ctew-nav{position:absolute;top:38%;transform:translateY(-50%);z-index:3;display:flex;align-items:center;justify-content:center;box-sizing:border-box;border:1px solid #e5e7eb;background:#fff;color:#111827;cursor:pointer;line-height:0;box-shadow:0 2px 8px rgba(0,0,0,.08);border-radius:50%;padding:0;transition:background-color .2s ease,color .2s ease,border-color .2s ease}
.ctew-nav svg{width:1em;height:1em;fill:currentColor}
.ctew-prev{left:-8px}.ctew-next{right:-8px}
.ctew-prev .ctew-flip{display:inline-flex;transform:scaleX(-1)}
.ctew-arrows-inside .ctew-prev{left:10px}
.ctew-arrows-inside .ctew-next{right:10px}
/* "Outside" arrows used to sit off the widget's own edge via a negative
   offset (e.g. left:-48px) — however far out that offset was clamped, it
   was still reaching for space the widget doesn't actually own, so it
   could always be pushed past the page edge by some layout (a full-width
   section, a narrow column, the Elementor editor's selection outline...).
   Instead, the carousel itself now reserves that space as inner padding —
   the cards shrink to make room, and the arrows sit inside that reserved
   strip at the carousel's own edge (left:0/right:0). The arrows still read
   as "outside" the card row, but they can never again land outside the
   widget's own box, so they can never force a horizontal scrollbar. */
.ctew-arrows-outside{padding:0 var(--ctew-arrow-space,52px);box-sizing:border-box}
.ctew-arrows-outside .ctew-prev{left:0}
.ctew-arrows-outside .ctew-next{right:0}
/* When there are too few slides to actually scroll, the JS marks the
   carousel .ctew-static and hides the (still-rendered) arrow buttons via
   the rule below — so there's nothing left needing that reserved space.
   Dropping the padding back to 0 here lets the cards use the full width
   again instead of sitting narrower for arrows that will never show. */
.ctew-arrows-outside.ctew-static{padding:0}
@media(max-width:1024px){.ctew-arrows-outside{padding:0 var(--ctew-arrow-space-mobile,36px)}.ctew-arrows-outside.ctew-static{padding:0}}
@media(max-width:480px){.ctew-arrows-outside{padding:0 var(--ctew-arrow-space-mobile,28px)}.ctew-arrows-outside.ctew-static{padding:0}}
.ctew-nav[disabled]{opacity:.35;cursor:default}
.ctew-dots{display:flex;gap:8px;justify-content:center;margin-top:14px}
.ctew-dot{width:8px;height:8px;border-radius:50%;background:#d1d5db;border:0;padding:0;cursor:pointer;transition:background-color .2s ease}
.ctew-dot.is-active{background:#ec4899}
/* Horizontal progress-bar navigation (alternative to dots) — a track with a
   sliding fill showing how far through the slides you are. */
.ctew-progress{position:relative;height:4px;border-radius:999px;background:#e5e7eb;margin-top:14px;overflow:hidden;cursor:pointer}
.ctew-progress-bar{position:absolute;top:0;left:0;height:100%;border-radius:inherit;background:#ec4899;transition:width .3s ease,left .3s ease}

/* Per-device Navigation (CT_Controls::navigation() responsive "Navigation"
   control) — e.g. Arrows on Desktop, Dots or Progress Bar on Mobile, so
   arrows never eat into mobile side-space. Same breakpoints ct-carousel.js
   itself uses for columns (≤767 mobile, 768–1024 tablet, ≥1025 desktop). */
@media (min-width:1025px){
	.ctew-nav-d-no > .ctew-nav{display:none}
	.ctew-dots-d-no > .ctew-dots,.ctew-dots-d-no ~ .ctew-dots{display:none}
	.ctew-progress-d-no > .ctew-progress,.ctew-progress-d-no ~ .ctew-progress{display:none}
}
@media (max-width:1024px) and (min-width:768px){
	.ctew-nav-t-no > .ctew-nav{display:none}
	.ctew-dots-t-no > .ctew-dots,.ctew-dots-t-no ~ .ctew-dots{display:none}
	.ctew-progress-t-no > .ctew-progress,.ctew-progress-t-no ~ .ctew-progress{display:none}
}
@media (max-width:767px){
	.ctew-nav-m-no > .ctew-nav{display:none}
	.ctew-dots-m-no > .ctew-dots,.ctew-dots-m-no ~ .ctew-dots{display:none}
	.ctew-progress-m-no > .ctew-progress,.ctew-progress-m-no ~ .ctew-progress{display:none}
}
/* Star rating — two stacked rows of real star glyphs (grey base + a gold
   overlay clipped to the rating %) instead of the old repeating-gradient
   "mask" trick, which produced plain rectangular blocks, not stars. */
.ctew-stars{--pct:calc(var(--rating,0)/5*100%);position:relative;display:inline-block;font-size:16px;line-height:1;letter-spacing:2px;font-family:Arial,Helvetica,sans-serif;color:#e5e7eb;user-select:none}
.ctew-stars::before{content:"\2605\2605\2605\2605\2605";position:absolute;top:0;left:0;width:var(--pct);overflow:hidden;white-space:nowrap;color:#fbbf24}
.ctew-product-card{position:relative;border:1px solid #eef2f7;border-radius:12px;padding:14px;text-align:left;height:100%;display:flex;flex-direction:column}
.ctew-product-card .ctew-card-wishlist{position:absolute;top:10px;right:10px;z-index:2}
.ctew-overlay-badges{position:absolute;top:10px;left:10px;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.ctew-overlay-badges .ctew-sale-badge{position:static}
.ctew-sale-badge{position:absolute;top:10px;left:10px;background:#ec4899;color:#fff;font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px}
.ctew-product-thumb{display:block;margin-bottom:10px;position:relative;overflow:hidden}
.ctew-product-thumb img{width:100%;height:auto;object-fit:contain;aspect-ratio:1/1}
.ctew-product-thumb.ctsuite-grid-video-playing img{opacity:0}
.ctsuite-grid-video-player{position:absolute;inset:0;width:100%;height:100%;z-index:0;background:#000}
/* Video sits UNDER badges/wishlist (both z-index:2 above) — without this the
   video (appended after the badges in a separate stacking context created by
   .ctew-product-thumb) painted on top and hid them. */
.ctew-product-thumb.ctsuite-grid-video-playing{z-index:0}
.ctew-product-title{display:block;font-size:14px;color:#111827;font-weight:600;margin-bottom:6px;text-decoration:none;line-height:1.35}
.ctew-product-price{font-size:15px;font-weight:700;color:#ec4899}
.ctew-product-rating{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:12px;color:#6b7280}
.ctew-atc{margin-top:auto;display:inline-block;text-align:center;background:#ec4899;color:#fff;font-size:13px;font-weight:600;padding:8px 12px;border-radius:8px;text-decoration:none}
.ctew-card-tile{display:block;text-decoration:none;color:#374151;text-align:center;border-radius:14px}
/* Image Area Size is a fixed px value (Elementor slider), so without a
   max-width cap it could render wider than the card itself once the grid
   had more columns / a narrower container than the size the value was
   chosen for — the image then visibly overflowed its card. margin:0 auto
   also centers the photo box itself, since text-align on the parent only
   centers inline content, not this flex box. */
.ctew-card-photo{display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:14px;aspect-ratio:1/1;margin:0 auto 8px;max-width:100%}
.ctew-shape-circle .ctew-card-photo{border-radius:50%}
.ctew-shape-wide .ctew-card-photo{aspect-ratio:4/3}
.ctew-card-photo img{width:100%;height:100%;object-fit:cover}
.ctew-card-label{font-size:13px;font-weight:600}
/* Card Grid — per-card video preview (self-hosted / YouTube / Vimeo / URL). */
.ctew-card-photo{position:relative}
.ctew-card-photo video.ctsuite-video-el,
.ctew-card-photo iframe.ctsuite-video-frame{position:absolute;border:0;z-index:2;background:#000}
.ctsuite-fit-contain{top:0;left:0;width:100%;height:100%;object-fit:contain}
.ctsuite-fit-cover.ctsuite-video-el{top:0;left:0;width:100%;height:100%;object-fit:cover}
.ctsuite-fit-cover.ctsuite-video-frame{top:50%;left:50%;width:300%;height:300%;transform:translate(-50%,-50%)}
.ctew-video-overlay{position:absolute;inset:0;z-index:1;background:var(--ctew-video-overlay,rgba(0,0,0,0));transition:background-color .25s ease;pointer-events:none}
.ctew-card-tile:hover .ctew-video-overlay{background:var(--ctew-video-overlay-hover,rgba(0,0,0,0))}
.ctsuite-play-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:3;display:flex;align-items:center;justify-content:center;width:var(--ctsuite-play-size,48px);height:var(--ctsuite-play-size,48px);border-radius:50%;transition:all .25s ease;pointer-events:none}
.ctew-card-tile[data-video-mode="click"] .ctsuite-play-icon{pointer-events:auto;cursor:pointer}
.ctew-card-photo.is-playing .ctsuite-play-icon{opacity:0;pointer-events:none}
.ctsuite-play-icon svg{width:1em;height:1em;fill:currentColor}
/* Hover effects (Video style panel) — applied to the whole card grid via a wrapper class. */
.ctew-hover-zoom .ctew-card-photo img{transition:transform .35s ease}
.ctew-hover-zoom .ctew-card-tile:hover .ctew-card-photo img{transform:scale(1.08)}
.ctew-hover-fade .ctew-card-photo img{transition:opacity .3s ease}
.ctew-hover-fade .ctew-card-tile:hover .ctew-card-photo img{opacity:.75}
.ctew-hover-darken .ctew-card-photo::after{content:'';position:absolute;inset:0;z-index:1;background:rgba(0,0,0,0);transition:background-color .3s ease;pointer-events:none}
.ctew-hover-darken .ctew-card-tile:hover .ctew-card-photo::after{background:rgba(0,0,0,.18)}
/* Video lightbox (Click to Play mode) */
.ctsuite-video-lightbox{position:fixed;inset:0;z-index:100000;display:none;align-items:center;justify-content:center;padding:16px}
.ctsuite-video-lightbox.is-open{display:flex}
.ctsuite-video-lightbox__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.85)}
.ctsuite-video-lightbox__box{position:relative;background:#000;z-index:1;width:min(900px,96vw);max-width:96vw;aspect-ratio:16/9;max-height:92vh}
.ctsuite-video-lightbox__body,.ctsuite-video-lightbox__body video,.ctsuite-video-lightbox__body iframe{width:100%;height:100%;border:0;display:block}
.ctsuite-video-lightbox__close{position:absolute;top:8px;right:8px;width:36px;height:36px;border:0;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-size:20px;line-height:1;cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center}
.ctsuite-video-lightbox__close:hover{background:rgba(0,0,0,.85)}
body.ctsuite-video-lightbox-open{overflow:hidden}
.ctew-cat-grid{display:grid;gap:14px}
.ctew-cat-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:18px 10px;border:1px solid #eef2f7;border-radius:12px;background:#fff;text-decoration:none;color:#374151;text-align:center;transition:box-shadow .2s}
.ctew-cat-tile:hover{box-shadow:0 6px 18px rgba(0,0,0,.08)}
.ctew-cat-ico img{width:40px;height:40px;object-fit:contain;max-width:100%}
.ctew-cat-label{font-size:13px;font-weight:600}
.ctew-brand-strip{display:grid;gap:14px}
.ctew-brand-cell{display:flex;align-items:center;justify-content:center;padding:18px;border:1px solid #eef2f7;border-radius:12px;background:#fff;min-height:70px;text-decoration:none;color:#111827;font-weight:700}
.ctew-brand-cell img{max-width:100%;max-height:44px;object-fit:contain}
.ctew-blog-grid{display:grid;gap:20px}
.ctew-blog-card{display:flex;flex-direction:column}
.ctew-blog-thumb img{width:100%;height:auto;border-radius:12px;aspect-ratio:4/3;object-fit:cover}
.ctew-blog-title{font-size:15px;font-weight:600;margin:10px 0 6px;line-height:1.35}
.ctew-read-more{font-size:13px;font-weight:600;text-decoration:none;color:#2563eb}
.ctew-feature-bar{display:grid;gap:14px;background:#fff;border:1px solid #eef2f7;border-radius:12px;padding:18px 20px}
.ctew-feat{display:flex;align-items:center;gap:10px}
.ctew-feat-ico{font-size:22px;display:inline-flex}
.ctew-feat-ico svg{width:1em;height:1em;fill:currentColor}
.ctew-feat-text{display:flex;flex-direction:column;line-height:1.3}
.ctew-feat-title{font-size:14px;font-weight:700;color:#111827}
.ctew-feat-sub{font-size:12px;color:#6b7280}
.ctew-deal{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;background:#fff4e0;border-radius:14px;padding:20px 24px}
.ctew-deal-info{display:flex;flex-direction:column}
.ctew-deal-title{font-size:18px;font-weight:800;color:#111827}
.ctew-deal-sub{font-size:13px;color:#6b7280}
.ctew-countdown{display:flex;gap:10px}
.ctew-cd-unit{display:flex;flex-direction:column;align-items:center;gap:4px}
.ctew-cd-box{min-width:44px;text-align:center;background:#ec4899;color:#fff;font-size:18px;font-weight:800;padding:8px 6px;border-radius:8px}
.ctew-cd-lbl{font-size:11px;color:#6b7280;text-transform:uppercase;letter-spacing:.04em}
.ctew-deal-btn{background:#ec4899;color:#fff;font-weight:700;text-decoration:none;padding:12px 22px;border-radius:10px}
.ctew-deal.is-ended .ctew-countdown{opacity:.5}
.ctew-tm-card{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:20px;height:100%;display:flex;flex-direction:column;gap:10px}
.ctew-tm-text{font-size:14px;color:#374151;line-height:1.5;margin:0}
.ctew-tm-author{display:flex;align-items:center;gap:10px;margin-top:auto}
.ctew-tm-avatar img{width:42px;height:42px;border-radius:50%;object-fit:cover}
.ctew-tm-meta{display:flex;flex-direction:column;line-height:1.25}
.ctew-tm-name{font-size:14px;font-weight:700;color:#111827}
.ctew-tm-role{font-size:12px;color:#6b7280}
@media(max-width:767px){.ctew-deal{flex-direction:column;align-items:flex-start}}
/* CT Add To Cart — quantity stepper + button (single product page) +
   optional WhatsApp/Enquiry row + optional per-product Custom Buttons. */
.ctew-add-to-cart{display:flex;flex-direction:column;gap:10px}
.ctew-add-to-cart__row{display:flex;align-items:stretch;gap:12px}
.ctew-add-to-cart__qty{display:flex;align-items:stretch;border:1px solid #e5e7eb;border-radius:8px;background:#fff;overflow:hidden;flex:0 0 auto}
.ctew-add-to-cart__qty-btn{border:0;background:transparent;width:36px;flex:0 0 36px;font-size:16px;line-height:1;cursor:pointer;color:inherit;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease}
.ctew-add-to-cart__qty-btn:hover{background:rgba(0,0,0,.05)}
.ctew-add-to-cart__qty-input{border:0;border-left:1px solid #e5e7eb;border-right:1px solid #e5e7eb;text-align:center;font-size:14px;color:inherit;background:transparent;-moz-appearance:textfield}
.ctew-add-to-cart__qty-input::-webkit-outer-spin-button,.ctew-add-to-cart__qty-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ctew-add-to-cart__button{position:relative;flex:1 1 0%;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;text-decoration:none;transition:background-color .2s ease,color .2s ease,border-color .2s ease}
.ctew-add-to-cart__button[disabled]{opacity:.55;cursor:not-allowed}
.ctew-add-to-cart__spinner{display:none;width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:ctew-atc-spin .6s linear infinite}
.ctew-add-to-cart__button.is-loading .ctew-add-to-cart__spinner{display:inline-block}
.ctew-add-to-cart__button.is-loading .ctew-add-to-cart__button-text{opacity:.6}
@keyframes ctew-atc-spin{to{transform:rotate(360deg)}}
.ctew-add-to-cart__message{font-size:13px;display:none;padding:2px 0}
.ctew-add-to-cart__message.is-success{color:#16a34a}
.ctew-add-to-cart__message.is-error{color:#dc2626}
.ctew-add-to-cart__inquiry .ctwc-action-buttons{margin-top:0}
.ctew-add-to-cart__custom{display:flex;flex-wrap:wrap;gap:10px}
.ctew-add-to-cart__custom-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;transition:background-color .2s ease,color .2s ease,border-color .2s ease}
@media(max-width:480px){.ctew-add-to-cart__row{flex-wrap:wrap}.ctew-add-to-cart__button{flex-basis:100%}}
.ctew-add-to-cart__variations{display:flex;flex-direction:column;gap:10px}
.ctew-add-to-cart__variation-field{display:flex;flex-direction:column;gap:4px}
.ctew-add-to-cart__variation-field label{font-size:13px;font-weight:600}
.ctew-add-to-cart__variation-select{padding:8px 10px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;font-size:14px;color:inherit;width:100%}
.ctew-add-to-cart__single-variation{font-size:14px}
.ctew-add-to-cart__grouped{display:flex;flex-direction:column;gap:4px}
.ctew-add-to-cart__grouped-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid #f0f0f0}
.ctew-add-to-cart__grouped-row.is-unavailable{opacity:.55}
.ctew-add-to-cart__grouped-name{flex:1 1 auto;min-width:120px;font-weight:500}
.ctew-add-to-cart__grouped-price{flex:0 0 auto}
.ctew-add-to-cart__grouped-qty{flex:0 0 auto}
.ctew-add-to-cart__grouped-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}
a.ctew-add-to-cart__external{text-decoration:none}
span.ctew-add-to-cart__button[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
.ctew-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ctew-add-to-cart__swatches{display:flex;flex-wrap:wrap;align-items:center}
.ctew-add-to-cart__swatch{cursor:pointer;background:#fff;border:1px solid #e5e7eb;line-height:1;transition:transform .1s ease,border-color .15s ease,background-color .15s ease,color .15s ease}
.ctew-add-to-cart__swatch--color{display:inline-block;padding:0;box-shadow:0 0 0 1px rgba(0,0,0,.04) inset}
.ctew-add-to-cart__swatch--image{display:inline-block;padding:0;overflow:hidden}
.ctew-add-to-cart__swatch--image img{display:block;width:100%;height:100%;object-fit:cover}
.ctew-add-to-cart__swatch--button,.ctew-add-to-cart__swatch--text{padding:6px 14px;border-radius:6px;font-size:13px}
.ctew-add-to-cart__swatch--text{border-color:transparent;background:transparent;text-decoration:underline;padding:2px 4px}
.ctew-add-to-cart__swatch--radio{display:inline-flex;align-items:center;gap:7px;padding:6px 12px 6px 8px;border-radius:6px;font-size:13px}
.ctew-add-to-cart__swatch--radio::before{content:"";width:14px;height:14px;flex:0 0 14px;border-radius:50%;border:1.5px solid #9ca3af;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}
.ctew-add-to-cart__swatch--radio.is-selected::before{border-color:#111827;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 100px #111827}
.ctew-add-to-cart__swatches:has(.ctew-add-to-cart__swatch--list){flex-direction:column;align-items:stretch}
.ctew-add-to-cart__swatch--list{width:100%;text-align:left;padding:8px 12px;border-radius:6px;font-size:13px}
.ctew-add-to-cart__swatch.is-selected{transform:translateY(-1px)}
.ctew-add-to-cart__price{font-size:15px}
.ctew-add-to-cart__price-prefix{margin-right:5px;display:inline-block}
.ctew-add-to-cart__price-suffix{margin-left:5px;display:inline-block}
